如何在C#中反序列化JSON?
有人能帮助我以这种格式反序列化json的正确方法吗:如何在C#中反序列化JSON?,json,c#-4.0,deserialization,Json,C# 4.0,Deserialization,有人能帮助我以这种格式反序列化json的正确方法吗: [ {person: {name: "James", age:26}}, {person: {name: "Mary", age:36}}, {person: {name: "Kofi", age:46}} ] 我使用的代码如下: WebRequest request = WebRequest.Create("url"); WebResponse response = request.GetResponse();
[
{person: {name: "James", age:26}},
{person: {name: "Mary", age:36}},
{person: {name: "Kofi", age:46}}
]
我使用的代码如下:
WebRequest request = WebRequest.Create("url");
WebResponse response = request.GetResponse();
string json;
using (var sr = new StreamReader(response.GetResponseStream()))
{
json = sr.ReadToEnd();
}
var serializer = new JavaScriptSerializer();
var persons= serializer.Deserialize<List<response>>(json);
foreach (var item in persons)
{
Console.Write("name:" + item.name + " and age: " + item.age);
}
public class person
{
public string name{get;set;}
public int age{get; set;}
}
public class response
{
public person person {get;set;}
}
当我运行此代码时,名称和年龄属性会不断得到null和空字符串。如果有人能帮助我,我将不胜感激。解决方案
我的解决方案非常简单,但您必须安装:
使用Newtonsoft.Json;
变量url=”http://your-url";
var json=JsonConvert.DeserializeObject(新的WebClient().DownloadString(url));
列表用户=新列表();
foreach(json中的var用户)
{
users.Add(新用户()
{
name=user.name,
年龄=用户年龄
});
}
解决方案
我的解决方案非常简单,但您必须安装:
使用Newtonsoft.Json;
变量url=”http://your-url";
var json=JsonConvert.DeserializeObject(新的WebClient().DownloadString(url));
列表用户=新列表();
foreach(json中的var用户)
{
users.Add(新用户()
{
name=user.name,
年龄=用户年龄
});
}
使用内置类也可以。见示例:
WebRequest request = WebRequest.Create("url");
WebResponse response = request.GetResponse();
using (Stream stream = response.GetResponseStream())
{
Type serializationTargetType = typeof(List<person>);
DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(serializationTargetType);
List<person> jsonDeserialized = (List<person>)jsonSerializer.ReadObject(stream);
}
WebRequest-request=WebRequest.Create(“url”);
WebResponse=request.GetResponse();
使用(Stream=response.GetResponseStream())
{
类型serializationTargetType=typeof(列表);
DataContractJsonSerializer jsonSerializer=新的DataContractJsonSerializer(serializationTargetType);
List jsonDeserialized=(List)jsonSerializer.ReadObject(流);
}
使用内置类也可以。见示例:
WebRequest request = WebRequest.Create("url");
WebResponse response = request.GetResponse();
using (Stream stream = response.GetResponseStream())
{
Type serializationTargetType = typeof(List<person>);
DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(serializationTargetType);
List<person> jsonDeserialized = (List<person>)jsonSerializer.ReadObject(stream);
}
WebRequest-request=WebRequest.Create(“url”);
WebResponse=request.GetResponse();
使用(Stream=response.GetResponseStream())
{
类型serializationTargetType=typeof(列表);
DataContractJsonSerializer jsonSerializer=新的DataContractJsonSerializer(serializationTargetType);
List jsonDeserialized=(List)jsonSerializer.ReadObject(流);
}
如果您需要的是对来自web服务器的响应进行反序列化,那么我将使用一些框架来完成所有这些
我已经使用过,而且效果很好。如果您需要的是对来自web服务器的响应进行反序列化,我会使用一些框架来完成所有这些
我已经使用过,而且效果很好。您可以定义反映JSON结构的模型:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Row
{
public Person Person { get; set; }
}
然后反序列化为一个行数组:
var serializer = new JavaScriptSerializer();
var rows = serializer.Deserialize<Row[]>(json);
foreach (var row in rows)
{
Console.Write("name: {0} and age: {1}", row.Person.Name, row.Person.Age);
}
var serializer=newJavaScriptSerializer();
var rows=serializer.Deserialize(json);
foreach(行中的变量行)
{
Write(“名称:{0}和年龄:{1}”,row.Person.name,row.Person.age);
}
您可以定义反映JSON结构的模型:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Row
{
public Person Person { get; set; }
}
然后反序列化为一个行数组:
var serializer = new JavaScriptSerializer();
var rows = serializer.Deserialize<Row[]>(json);
foreach (var row in rows)
{
Console.Write("name: {0} and age: {1}", row.Person.Name, row.Person.Age);
}
var serializer=newJavaScriptSerializer();
var rows=serializer.Deserialize(json);
foreach(行中的变量行)
{
Write(“名称:{0}和年龄:{1}”,row.Person.name,row.Person.age);
}
我必须在foreach循环中调用item.person.name和item.person.age,并确保person类中的所有属性都是string类型。我必须在foreach循环中调用item.person.name和item.person.age,并确保person类中的所有属性都是string类型。您正在映射到person类,但是在反序列化程序中使用“auto”类?您确定这是有效的JSON吗?我想你需要更多的“
关于“person”
似乎同意meI必须在foreach循环中调用item.person.name和item.person.age。你可能的副本映射到person类,但是在你的反序列化器中你使用了“auto”类?你确定这是有效的JSON吗?我想你需要更多的”
关于“person”
似乎同意meI必须在foreach循环中调用item.person.name和item.person.age。这可能重复一次就行不通了。OP显示的JSON结构并不表示person
的数组。因此,使用person[]
作为类型将使序列化程序崩溃。这不起作用。OP显示的JSON结构并不表示person
的数组。因此,使用person[]
作为类型将使序列化程序崩溃。