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

本文关键字:json 获取 对象 列表 文件 | 更新日期: 2023-09-27 18:26:44

我可以序列化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 is object即将到来null

有人能提供一个例子或如何获得json对象列表吗。

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

要使用上面的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字符串,因为缺少"["answers"]"。如果你不想添加更多的新代码,你可以使用类似的东西:

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

或者,您可以使用普通的FileReader将文件读取到字符串对象中,并在开头和结尾添加"[","]"。