2012-04-10 6 views
1

私は以下のJsonコレクションを持っています。私は.Netコレクションとして表現する必要があります。本質的には、鍵(col)を持つ鍵と値のペアのリストであり、おそらく公開されている(辞書がこの段階で出ている)。オブジェクトのJson配列を最も適切な.Netコレクションに変換する

私は並べ替えとグループ化がいいですが、必須ではありません。どのような最高の.Netの列挙が最も適しているかを特定するのに役立つことができますか?

[ 
    { 
     "col": "thiscol", 
     "val": "thisval" 
    }, 
    { 
     "col": "thiscol", 
     "val": "thisval2" 
    }, 
    { 
     "col": "thiscol2", 
     "val": "thisval2" 
    }, 
    { 
     "col": "thiscol3", 
     "val": "thisval3" 
    } 
] 

答えて

13

dynamic

dynamic dynObj2 = new JavaScriptSerializer().Deserialize<List<object>>(yourstring); 
foreach (var item in dynObj2) 
{ 
    Console.WriteLine(item["col"] + " " + item["val"]); 
} 
1

あなたは、このケースでは、各キーに複数の値を可能にする基本的に辞書引きを使用することができます - LINQのとあなたがToLookup()を使用して、ルックアップに投影することができます。ルックアップは不変ですが、それはあなたの請求書に合わないかもしれないことに注意してください。

また、もちろんあなたは自分の値型としてコレクションを使用してDictionary<T,IList<U>>(またはIEnumerable<U>)を使用することができます - 辞書は、そのような柔軟性があります。

1

IEnumerable<YourObject>YourObjectは、これらの値を保持するために定義するクラスです。 jsonを解析するには​​を使うことをお勧めします。その後、linqを使ってIEnumerableを管理することができます。 Json.Net

dynamic dynObj = JsonConvert.DeserializeObject(yourstring); 
foreach (var item in dynObj) 
{ 
    Console.WriteLine(item.col + " " + item.val); 
} 

又は

JArray jArray = (JArray)JsonConvert.DeserializeObject(yourstring); 
var newlist = jArray.OrderByDescending(x => x["val"]).ToArray(); 

又は

JArray jArray = (JArray)JsonConvert.DeserializeObject(yourstring); 
dynamic dynObj1 = jArray.OrderByDescending(x => x["val"]); 
foreach (var item in dynObj1) 
{ 
    Console.WriteLine(item.col + " " + item.val); 
} 

または内蔵JavaSとを用い

1

criptSerializer &は、あなたがNameValueCollectionを見たことがありますか?値を取得するforループを使用してその後

0

JArray arr = JArray.Parse(Your string);

関連する問題