簡體   English   中英

Json.net反序列化到類

[英]Json.net deserialize to class

試圖使用json.net反序列化json字符串的這種和平性,但是反序列化時我總是會遇到異常。 誰能幫助我設置課程,以便反序列化。

謝謝

{
    "type":"some_type",
    "version":"0.1",
    "data":
    {
        "item_name_1":
        {
            "id":266,
            "key":"aaa",
            "name":"aaa",
            "title":"title_1",
            "info":
            {
                "property_1":9,
                "property_2":4,
            }
        },
        "item_name_2":
        {
            "id":266,
            "key":"bbb",
            "name":"bbb",
            "title":"title_2",
            "info":
            {
                "property_1":93,
                "property_2":24,
            }
        }
    }
}

您在info的最后一個屬性之后有一個逗號(,),該屬性不應存在。 我總是使用jsonlint來檢查json對象中是否有任何錯誤。

{
    "type":"some_type",
    "version":"0.1",
    "data":
    {
        "item_name_1":
        {
            "id":266,
            "key":"aaa",
            "name":"aaa",
            "title":"title_1",
            "info":
            {
                "property_1":9,
                "property_2":4
            }
        },
        "item_name_2":
        {
            "id":266,
            "key":"bbb",
            "name":"bbb",
            "title":"title_2",
            "info":
            {
                "property_1":93,
                "property_2":24
            }
        }
    }
}

如果我們忽略逗號,這顯然是錯字

問題是因為item_name可以命名為不同的名稱(item_name_1,_2 ...

是的,那是完全正確的; 名稱需要匹配。 如果你需要一些映射匹配,你要么需要提供自定義轉換器,或(通常是簡單的)將數據映射到一個字典-即你可能有:

public Dictionary<string, Item> data {get;set;}

(代表"data":節點)

這將導致鍵值對,其中每個鍵是字段名稱( "item_name_1"等),每個值是Item實例(具有屬性idkeyname等)。

public class MyRootObject {
    public string type {get;set;}
    public string version {get;set;}
    public Dictionary<string, Item> data {get;set;}
}
pulic class Item {
    public int id {get;set;}
    public string key {get;set;}
    public string name {get;set;}
    public string title {get;set;}
    public Dictionary<string,int> info {get;set;}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM