2013-07-25 67 views
1

字段被忽略。我成功找回2個對象的列表,但沒有填充任何字段。我究竟做錯了什麼? (不幸的是我沒有在JSON格式的控制。它到達正是這種結構。使用JavaScriptSerializer進行反序列化時缺少字段

using System.Web.Script.Serialization; 

public void myMethod { 
    string myContent = @" 
    [ 
    { 
     "my_object": { 
      "city": "city 1", 
      "myAge": 15 
     } 
    }, 
    { 
     "my_object": { 
      "city": "city 2", 
      "myAge": 18 
     } 
    } 
    ]"; 

    JavaScriptSerializer serializer = new JavaScriptSerializer(); 
    List<my_object> list = serializer.Deserialize<List<my_object>>(myContent); 

} 

public class json_content { 
    public string city { get; set; } 
    public int myAge { get; set; } 
} 

回答

2

此代碼解決您的問題:

public void myMethod() 
{ 
    string myContent = @" 
     [ 
      { 
       ""json_content"": { 
        ""city"": ""city 1"", 
        ""myAge"": 15 
       } 
      }, 
      { 
       ""json_content"": { 
        ""city"": ""city 2"", 
        ""myAge"": 18 
       } 
      } 
     ]"; 

    JavaScriptSerializer serializer = new JavaScriptSerializer(); 
    List<wrapper> list = serializer.Deserialize<List<wrapper>>(myContent); 
} 

public class wrapper 
{ 
    public json_content json_content { get; set; } 
} 

public class json_content 
{ 
    public string city { get; set; } 
    public int myAge { get; set; } 
} 
+0

與下面的答案一樣的問題。不幸的是,我無法控制JSON格式。 –

+0

我做了一個編輯。它應該現在工作:) –

+0

這樣做!非常感謝! –

2

你有對象的名單在你的JSON一個屬性json_content,但預計直接含json_content對象名單。

最有可能的解決辦法是從JSON除去中間對象(如果你控制它):

[ 
    { 
    "city": "city 1", 
    "myAge": 15 
    },... 
]; 

如果不控制JSON添加外部類:

class JsonOuterContent 
{ 
    public JsonContent json_content; 
} 

List<JsonOuterContent> list = serializer 
     .Deserialize<List<JsonOuterContent>>(myContent); 
+0

我不控制JSON格式。不幸的是,它從外部API回來。 –

+1

同意。如果OP對於什麼格式的JavascriptSerializer可以期待,爲什麼不序列化一個List 並檢查字符串的問題。 –

+0

我改變了最初的JSON字段名稱,以減少誤導。 –

相關問題