从JSON字符串中的任何位置查找和检索键控值

时间:2015-08-28 18:57:49

标签: c# linq json.net

我正在检索内容项可能不同的JSON,并希望找到与特定键相关联的值,例如在这种情况下" geo_latitude"和" geo_longitude"。为清楚起见,我只在这个JSON示例中包含了这两个项目。 (它通常更长,没有特别的顺序)。

[
  {
    "id": 524616,
    "key": "geo_latitude",
    "value": "36.1069652"
  },
  {
    "id": 524617,
    "key": "geo_longitude",
    "value": "-112.1129972"
  }
]

这是我能够解析JSON的最佳方法。还有更好的方法吗?

var metadataObj = JArray.Parse(postMetadataJsonStr);

var latContainer = metadataObj.Descendants()
    .OfType<JObject>()
    .Where(x => x["key"] != null &&
                x["key"].Value<string>() == "geo_latitude").Select(y => y["value"]);

var latTokenJValue = latContainer.FirstOrDefault();
if (latTokenJValue == null) return;
var latitude = latTokenJValue.ToString();

1 个答案:

答案 0 :(得分:0)

我会将你的json转换成字典

var metadataObj = JArray.Parse(postMetadataJsonStr);
var dict = metadataObj.ToDictionary(x => (string)x["key"], x => (double)x["value"]);

Console.WriteLine(dict["geo_latitude"]);