使用JSON.NET解析JSON键/值对

时间:2015-04-14 16:26:48

标签: c# json

我有一个.NET项目。我正在使用JSON.NET库。我需要使用这个库来解析一些JSON。我的JSON看起来像这样:

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

对象实际上只是键/值对的列表。我试图弄清楚如何使用JSON.NET 1)解析这个JSON和2)循环键/值对。有没有办法做到这一点?如果是这样,怎么样?

我唯一看到的是反序列化为强类型对象。

非常感谢你!

3 个答案:

答案 0 :(得分:44)

您可以反序列化为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""}");

答案 1 :(得分:1)

以下是json Where子文件具有键值对

{  
"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反序列化此对象

答案 2 :(得分:1)

大家都觉得我也应该分享这个

以上答案适用于我使用asp.ne t中的文本框

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