2015-12-14 71 views
2

我可以序列JSON文件的一個節點像下面我如何獲得JSON對象的列表從JSON文件

using (JsonTextReader jsonReader = new JsonTextReader(file)) 
{    
    deserializedJson = eerializer.Deserialize<Person>(jsonReader); 
} 

JsonNRadio是自動生成的類JSON文件。 現在我的json文件有多個json對象。 所以,爲了這個,我創建了一個名爲的人

public class Persons 
{ 
    private Person[] person; 

    public Person[] person 
    { 
     get 
     { 
     return this.person; 
     } 
     set 
     { 
     this.person= value; 
     } 
    } 
} 

public partial class Person 
{ 
    public string id { get; set; } 
    public string name { get; set; } 
} 

類現在我應該得到的JSON對象的aaray,但是當我用下面的代碼嘗試,我只得到了第一個節點。

JsonSerializer serializer = new JsonSerializer(); 
using (StreamReader file = File.OpenText(@"D:\\Sample.json")) 
// deserializedXml = serialized.Deserialize(xmlStream); 
using (JsonTextReader jsonReader = new JsonTextReader(file)) 
{ 
    Persons deserializedXml = serializer.Deserialize<Persons> (jsonReader);  
} 

而人是對象來

任何人都可以幫助一個例子或如何獲得json對象的列表。

+1

JSON的外觀如何? – Tyress

+0

{「id」:「6397486515343190」,「name」:「Henry」},{「id」:「6397486515343192」,「name」:「Paul」} – Shruti

+0

我應該得到一個Persons對象數組 – Shruti

回答

0

對於接收JSON數據與您人以上類,你的JSON文件必須是這樣的:

{"Person":[{"id":"6397486515343190","name":"Henry"},{"id":"6397486515343192","name":"Paul"}]} 

但既然你對JSON數據的設計沒有影響,你可以簡單地反序列化它成一個人名單:

using (JsonTextReader jsonReader = new JsonTextReader(file)) 
{ 
    var deserializedXml = serializer.Deserialize<List<Person>> (jsonReader);  
} 

這應該適合你。

用於在反序列化之前編輯您的json字符串,因爲缺少「[」和「]」。您可以使用類似的東西,如果你不希望添加更多的新代碼:

using (JsonTextReader jsonReader = new JsonTextReader(file)) 
{ 
    var json = "[" + jsonReader.Value.ToString() + "]";  
    var deserializedXml = JsonConvert.DeserializeObject<List<Person>>(json); 
} 

或者你可以用普通的的FileReader文件讀入到一個字符串對象,並添加「[」,「 ]「在開始和結束。

+0

我已經試過了。但是我得到了下面的錯誤。 – Shruti

+1

無法反序列化當前的JSON對象(例如{「name」:「value」})到類型'System.Collections.Generic.List'1 [Person]'中,因爲該類型需要JSON數組(例如[1,2,3 ])來正確地反序列化。 – Shruti

+0

@Shruti是你的JSON有效嗎? http://jsonlint.com/在這裏粘貼一個示例JSON來檢查。如果它沒有輸出有效的JSON,則可能需要在獲取它時進行修復。 – Tyress