c# - 我如何从 json 文件中获取 json 对象的列表

标签 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 is object 即将null

谁能帮忙举个例子或如何获取 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 字符串。如果您不想添加更多新代码,可以使用类似的东西:

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

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

关于c# - 我如何从 json 文件中获取 json 对象的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34264438/

相关文章:

c# - 更改 "for"中的属性 "Html.LabelFor"

C# MySQL 参数不起作用

arrays - Angular 6 比较两个 JSON 数组

javascript - AngularJS ng-repeat 显示来自 Json 的二维数组

xml - 删除 XSLT 中的前导 0

c# - 更改 PrinterSettings.Copies 不起作用

c# - 继承 : does not contain a definition for and no extension method accepting a first argument

php - 如何在php中将jsonarray转换为jsonobject并另存为json文件

java - 替换 XML 节点内出现的 >、< 和 & 字符

xml - 如何在 Android 上使用 SAXParser 实现字符方法