我可以像下面这样序列化 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/