[英]How to deserialize JSON values in C# and ASP.NET?
我需要获取从Web URL获取的一些值。 JSON如下:
{"country":{"name":"India","State":"Raj": Count :239}, "Population": 25487}
现在我想使用C#获取Count和Population的值。
我尝试过使用JavaScriptSerializer();
但问题是它的响应时间要慢得多。
请建议我从这个JSON字符串中获取值的方法。
谢谢
我个人用
https://github.com/ServiceStack/ServiceStack.Text
这是一个非常快速的JSON串行器/解串器。
我通常创建一个扩展方法来使代码更整洁:
public static string ToJson(this object _obj)
{
return JsonSerializer.SerializeToString(_obj);
}
编辑:
获取这些值的快捷方法是创建一个数据类:
public class Country
{
public string name { get; set; }
public string State { get; set; }
public int Count { get; set; }
}
public class CountryInformation
{
public Country Country { get; set; }
public int Population { get; set; }
}
然后,使用ServiceStack:
void SomeFunction(string _Json)
{
var FeedResult = _Json.FromJson<CountryInformation>();
}
然后,您可以从FeedResult获取值:
FeedResult.Country.name;
一种选择是使用Json.NET - http://json.codeplex.com/
我通常建议使用像@misterjingo建议的打字POCO。 但是对于一次性任务,您可以使用ServiceStack的Json Serializer动态解析它,如:
var json = "{\"country\":{\"name\":\"India\",\"State\":\"Raj\": \"Count\": 239}, \"Population\": 25487}";
var jsonObj = JsonObject.Parse(json);
var country = jsonObj.Object("country");
Console.WriteLine("Country Name: {0}, State: {1}, Count: {2} | Population: {3}",
country["name"], country["State"], country["Count"], jsonObj["Population"]);
//Outputs:
//Country Name: India, State: Raj, Count: 239 | Population: 25487
注意: JSON规范要求对象属性名称是一个始终为双引号的字符串。
ServiceStack的JsonSerializer也是最快的Json Serializer for .NET ,比其他Json Serializer快得多 。
您还可以使用较新的DataContractJsonSerializer类来处理JSON数据。
你可以使用DataContractSerialiser(理想情况下,如果你创建了feed),如果你有一个棘手的格式错误的json字符串,使用JSON.net,因为它给你linq2json一次解析一个节点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.