2011-11-18 19 views
4

我需要獲取從網址獲得的一些值。 的JSON作爲給定:如何反序列化C#和ASP.NET中的JSON值?

{"country":{"name":"India","State":"Raj": Count :239}, "Population": 25487} 

現在我想讀取計數與人口使用C#的值。

我試過使用JavaScriptSerializer();但問題是它的響應時間要慢得多。

請建議我從這個JSON字符串中獲取值的方法。

感謝

回答

4

我個人使用

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;

+0

+1非常好,簡單的擴展方法。 – Yuck

+0

最近版本的ServiceStack.Text自帶'ToJson ()'和'FromJson ()'擴展方法:) – mythz

+0

如果我從網址www.xyz獲取JSON,請問我可以爲我編寫c#代碼。 COM .....並假設它給出了上面顯示的JSON。現在我怎樣才能得到使用ServiceStack的值,並打印它們在一個標籤(說)...希望你會更多一點的代碼....謝謝 – ItsLockedOut

0

您可以使用DataContractSerialiser(理想的情況下如果您創建提要),並且如果您有棘手的格式錯誤的json字符串,請使用JSON.net,因爲它可以讓linq2json一次解析一個節點。

1

我通常建議使用鍵入的POCO,如@misterjingo建議。 然而,對於一次性的任務,你可以使用ServiceStack's 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 spec需要的對象屬性的名稱是它總是雙引號的字符串。

ServiceStack的JsonSerializer也是最快的Json串行器,用於.NET much faster than other Json Serializers

+0

我不知道這一點,感謝分享! –