[英]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
實例(具有屬性id
, key
, name
等)。
即
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.