如何从json文件中获取json对象列表

时间:2015-12-14 10:15:19

标签: c# json xml

我可以序列化json文件的一个节点,如下所示

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

JsonNRadio是带有json文件的自动生成的类。 现在我的json文件有多个json对象。 所以,为此我创建了一个名为Persons的类

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对象,但是当我尝试使用下面的代码时,我只得到第一个节点。

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);    
}

Person是对象来了 null

任何人都可以帮助一个例子或如何获取json对象列表。

1 个答案:

答案 0 :(得分:0)

要使用上面的 Persons 类接收json数据,您的json文件必须如下所示:

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

但是由于你对json数据的设计没有影响,你可以简单地将它反序列化为Person列表:

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 将文件读入字符串对象,并在开头和结尾添加“[”,“]”。