3

私は JSON と JSON.net を初めて使用し、JSON オブジェクト内の JSON オブジェクトの配列に問題があります。私が見た他の例として、JSON.netを使用しているため、簡単に使用できます。

インターネットから次の JSON 文字列をダウンロードしています。

{"count":2,"data":[{"modifydate":12345,"key":"abcdef", "content":"test file 1"},{"modifydate":67891,"key":"ghjikl", "content":"test file 2"}]}

逆シリアル化する必要があることはわかっています。そのためには、作成した JSON クラスが必要です。

    public class NOTE
    {
        [JsonProperty(PropertyName = "count")]
        public int count { get; set; }

        [JsonProperty(PropertyName = "key")]
        public string key { get; set; }

        [JsonProperty(PropertyName = "modifydate")]
        public float modifydate { get; set; }

        [JsonProperty(PropertyName = "content")]
        public string modifydate { get; set; }

    }

したがって、次を使用してデシリアライズします。

NOTE note = JsonConvert.DeserializeObject<NOTE>(e.Result);

count プロパティにアクセスして正常に読み取ることができるため、これは正常に機能しますが、 data プロパティのすべてを読み取ることはできません。JSONオブジェクトの配列のように思えますが、問題が発生しています。たとえば、すべての「キー」値またはすべての「コンテンツ」文字列のリストを取得できるようにしたいと考えています。

ここから多くの方法を試しましたが、何も機能していないようです/比較できる私のものとまったく同じ状況を見つけることができませんでした.

誰かが私に素晴らしい手を与えることができたら:)

4

1 に答える 1

3

JSON にはネストされたオブジェクトがありますが、逆シリアル化しようとしているオブジェクトにはネストされたオブジェクトがありません。物事が適切に機能するには、適切な階層が必要です。

public class Note
{
    [JsonProperty(PropertyName = "count")]
    public int Count { get; set; }

    [JsonProperty(PropertyName = "data")]
    public Data[] Data { get; set; }
}

public class Data
{
    [JsonProperty(PropertyName = "modifydate")]
    public float ModifyDate { get; set; }

    [JsonProperty(PropertyName = "key")]
    public string Key { get; set; }

    [JsonProperty(PropertyName = "content")]
    public string Content { get; set; }
}

これで、物事を適切に逆シリアル化できるはずです。

var note = JsonConvert.DeserializeObject<Note>(e.Result);
// loop through the Data elements and show content

foreach(var data in note.Data)
{
    Console.WriteLine(data.content);
}
于 2012-04-29T02:04:08.060 に答える