我可以序列化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对象列表。
答案 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 将文件读入字符串对象,并在开头和结尾添加“[”,“]”。