1

次の Json コレクションがあり、それを .Net コレクションとして表す必要があります。基本的に、これはキー (col) が重複している可能性のあるキーと値のペアのリストです (辞書はこの段階では出ていません)。

並べ替えとグループ化は便利ですが、必須ではありません。最適な .Net 列挙が最適なものを特定するのに役立つものはありますか?

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

5 に答える 5

13

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);
}

または組み込みの JavaScriptSerializer &dynamic

dynamic dynObj2 = new JavaScriptSerializer().Deserialize<List<object>>(yourstring);
foreach (var item in dynObj2)
{
    Console.WriteLine(item["col"] + " " + item["val"]);
}
于 2012-04-10T21:23:22.340 に答える
1

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

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

于 2012-04-10T21:18:09.703 に答える
1

IEnumerable<YourObject>whereYourObjectは、これらの値を保持するために定義するクラスです。Json.Netを使用して json を解析することをお勧めします。次に、linq を使用して、返された IEnumerable を管理できます。

于 2012-04-10T21:20:03.163 に答える
1

NameValueCollectionを見ましたか?

于 2012-04-10T21:29:34.960 に答える
0

JArray arr = JArray.Parse(Your string);

その後、 for ループを使用して値を取得し、

于 2014-03-11T10:19:52.043 に答える