2015-04-14 116 views
9

我有一個.NET項目。我正在使用JSON.NET庫。我需要使用這個庫來解析一些JSON。我的JSON如下所示:用JSON.NET解析JSON鍵/值對

{"1":"Name 1","2":"Name 2"} 

該對象實際上只是一個鍵/值對列表。我想弄清楚如何使用JSON.NET來解析這個JSON和2)循環通過鍵/值對。有沒有辦法做到這一點?如果是這樣,怎麼樣?

我看到的唯一情況是反序列化成強類型對象。

太謝謝你了!

+0

你對我的作品生成這個JSON?它會始終是1和2作爲鍵名嗎? – mason

+0

那麼你在JSON.NET方面迄今爲止嘗試過了什麼?它看起來像你應該能夠解析這個'JObject',或將其轉換爲'Dictionary '非常容易... –

+0

可能的重複[我如何反序列化JSON到一個簡單的字典<字符串,string> in ASP.NET?](http://stackoverflow.com/questions/1207731/how-can-i-deserialize-json-to-a-simple-dictionarystring-string-in-asp-net) –

回答

29

你可以反序列化到Dictionary<string, string>

var dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(json); 
foreach(var kv in dict) 
{ 
    Console.WriteLine(kv.Key + ":" + kv.Value); 
} 

由於JObject實現IDictionary,你也可以簡單地使用JObject.Parse

var dict = JObject.Parse(@"{""1"":""Name 1"",""2"":""Name 2""}"); 
0

下面是JSON凡subratings有鍵值對

{ 
"data": [  
{  
"id": "288560300",  
"lang": "en", 

"subratings":  {  

"Cleanliness": "5", 

"Sleep Quality": "5", 

"Service": "5" 
    } 
} 
]} 

public void LoadJsonKeyValuePair(string json) 
{ 
Rootobject item = JsonConvert.DeserializeObject<Rootobject>(json); 
} 

public class Rootobject 
{ 
[JsonProperty("data")] 
public List<Datum> data { get; set; } 
} 

public class Datum 
{ 
[JsonProperty("id")] 
public string id { get; set; } 
[JsonProperty("lang")] 
public string lang { get; set; } 
[JsonProperty("subratings")] 
public Dictionary<string, object> subratings { get; set; } 
} 

您可以使用Newtonsoft。 JSON反序列化這個對象

+1

你能解釋一下如何用這個例子列出鍵/值對嗎?我有一個類似的設置。它不清楚如何訪問與什麼在這裏鍵/值對。 – Autonomic

1

大家覺得我也應該分享這個

以上回答使用文本框asp.ne牛逼

var jsonData = JsonConvert.DeserializeObject<Dictionary<string, string>> 
(json_Incoming_fromServer); 
foreach(var keyvalue in jsonData) 
{ 

    textBox.text = keyvalue.Value; // this will only display the value of that 
    // attribute/key 

} 

感謝EZI