1

私のコントローラーでは、JSON である文字列を取得します。

String json_string = this.Request.Content.ReadAsStringAsync().Result;

それは次のようになります。

{
    "21": {"Id":21,"DisplayOrder":3, ... snip ... },
    "333":{"Id":333,"DisplayOrder":2, ... snip ... },
    "591":{"Id":591,"DisplayOrder":1, ... snip ... }
}

私はこの JSON の構造について発言権を持っていないので、キーのないものにフォーマットすることはできません。ID はそのディクショナリの値内にあるため、これらのキーは必要ありません。

json_stringいずれにせよ、その構造の「行」を反復処理するときに、必要な 2 つの項目だけを取り出すことができるように変換するにはどうすればよいですか? Id、DisplayOrder?

そのようです:

int Id = row_item.Id;
int DisplayOrder = row_item.DisplayOrder;

ありがとう!エリック

4

1 に答える 1

0
string json = @"{
    ""21"": {""Id"":21,""DisplayOrder"":3},
    ""333"":{""Id"":333,""DisplayOrder"":2},
    ""591"":{""Id"":591,""DisplayOrder"":1}}";

var list = new JavaScriptSerializer()
               .Deserialize<Dictionary<string, Dictionary<string, object>>>(json)
               .Values
               .ToList();

Console.WriteLine(list[0]["Id"]); // <--21

Json.Netでも同じことができます

var jObj = JsonConvert
           .DeserializeObject<Dictionary<string, Dictionary<string, object>>>(json)
           .Values
           .ToList();

Console.WriteLine(jObj[0]["Id"]);

dynamicも活用できます

var jObj = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(json)
            .Values
            .ToList();

Console.WriteLine(jObj[0].DisplayOrder);
于 2012-11-06T16:06:55.110 に答える