我有一个 .NET 项目,正在使用 JSON.NET 库。我需要使用这个库来解析一些 JSON 数据。我的 JSON 数据长这样:
{"1":"Name 1","2":"Name 2"}
该对象实际上只是一组键值对列表。我正在尝试弄清如何使用JSON.NET来1)解析此JSON并2)遍历键值对。是否有方法可以做到这一点?如果有,怎么做?
我看到的唯一方法是将其反序列化为一个强类型对象。
非常感谢!
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""}");
{
"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; }
}
大家好,我觉得我也应该分享一下这个。
上面的答案对我来说在使用 ASP.NET 中的文本框时有效。
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
}
JObject
,或者非常容易地将其转换为Dictionary<string, string>
... - Jon Skeet