4
{"Posts":
          [{"id":"1",
            "title":"Bibidh prothom khondo",
            "content":"sjih sdkljjdsf kdjsfjks",
            "author":"","last_update":"23 june 2013",
            "Comments":
                [{"id":"1",
                  "content":"sjih sdkljjdsf kdjsfjks",
                  "author":"","last_update":"23 june 2013"}]},
            {"id":"2",
             "title":"Bibidh prothom khondo",
             "content":"sjih sdkljjdsf kdjsfjks",
             "author":"",
             "last_update":"24 june 2013",
             "Comments":[{"id":"1","content":"sjih sdkljjdsf kdjsfjks","author":"","last_update":"23 june 2013"}]},{"id":"3","title":"Bibidh prothom khondo","content":"sjih sdkljjdsf kdjsfjks","author":"","last_update":"25 june 2013"}]}

このjsonを解析しようとしています。&このため、私のコードは次のとおりです。

public class Attributes
    {
        [JsonProperty("id")]
        public string ID { get; set; }
        [JsonProperty("title")]
        public string TITLE { get; set; }
        [JsonProperty("content")]
        public string CONTENT { get; set; }
        [JsonProperty("author")]
        public string AUTHOR { get; set; }
        [JsonProperty("last_update")]
        public string LAST_UPDATE { get; set; }
        [JsonProperty("Comments")]
        public string[] COMMENTS { get; set; }
    }

    public class DataJsonAttributeContainer
    {
        public List<Attributes> attributes { get; set; }
    }

    public static T DeserializeFromJson<T>(string json)
    {
        T deserializedProduct = JsonConvert.DeserializeObject<T>(json);
        return deserializedProduct;
    }

私はこの次の方法の両方を試しました:

var container = DeserializeFromJson<DataJsonAttributeContainer>(e.Result);

&var container = DeserializeFromJson<List<Attributes>>(e.Result);

Json 文字列の sonloads は完全に問題なく実行されますが、JSON 文字列からの逆シリアル化中にプログラムがクラッシュします。ここで非常にばかげた間違いを犯したと思いますが、それを理解することはできません。誰でもこの点で私を助けてもらえますか? 前もって感謝します。

4

2 に答える 2

4

のアイテムを内側にしたい場合は、で言及する必要がある場合よりもPosts、単に除外していますdeserializingdeserializePostsdeserialization

これを試して :

var parsed = JObject.Parse(e.Result);
var container = DeserializeFromJson<List<Attributes>>(parsed["Posts"]);

また

var parsed = JsonSerializer.DeserializeFromString<Dictionary<string,string>>(e.Result);
var container = DeserializeFromJson<List<Attributes>>(parsed["Posts"]);
于 2013-07-23T05:42:26.397 に答える