簡體   English   中英

如何在C#和ASP.NET中反序列化JSON值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM