c# - 使用 Json.NET 解析 Json 字符串

标签 c# json.net

我正在使用 Json.NET 来解析 json 字符串,但是当我尝试使用 SelectToken 时它返回 null。另外,Json.NET 似乎将 json 字符串读取为 1 个节点

这是 JSON

[
   [{
      "input_index":0,
      "candidate_index":0,
      "delivery_line_1":"124 Main St",
      "last_line":"Cambridge MA 02138-5813",
      "delivery_point_barcode":"021385813991",
      "components":{
         "primary_number":"125",
         "street_name":"Main",
         "street_suffix":"St",
         "city_name":"Cambridge",
         "state_abbreviation":"MA",
         "zipcode":"02138",
         "plus4_code":"5813",
         "delivery_point":"99",
         "delivery_point_check_digit":"1"
      },
      "metadata":{
         "record_type":"H",
         "county_fips":"25017",
         "county_name":"New York",
         "carrier_route":"C025",
         "congressional_district":"08",
         "building_default_indicator":"Y"
      },
      "analysis":{
         "dpv_match_code":"D",
         "dpv_footnotes":"AAN1",
         "dpv_cmra":"N",
         "dpv_vacant":"N",
         "ews_match":false,
         "footnotes":"A#H#N#"
      }
   }]
]

这是代码

JArray o = JArray.Parse(page);
string something = (string)o.SelectToken("county_name");

但是它只是返回 null,我完全困惑了,因为 JSON.NET 解析这个 Json 字符串出了问题

最佳答案

参见:What is the JSON.NET equivalent of XML's XPath, SelectNodes, SelectSingleNode?

var data = GetJson();

//You can use the SelectToken to get the value similar to XPath.
var value = JArray.Parse(data)
                  .SelectToken("[0][0].metadata.county_name")
                  .Value<string>();

这可以扩展以支持多个元素:

var jArray = JArray.Parse(data);
var countyNames = new List<string>();

foreach(var element in jArray.SelectToken("[0]"))
{
    var value = element.SelectToken("metadata.county_name").Value<string>();

    countyNames.Add(value);
}

关于c# - 使用 Json.NET 解析 Json 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17515583/

相关文章:

c# - Json.Net "m³/h"反序列化为 "m�/h"

c# - 留下下拉组合框会吞噬 WPF 中的焦点

c# - 为 RSA SecurID 开发的困难

c# - 按等级排序字符串列表

c# - 使用未分配的变量?

c# - JArray 阻止日期解析

c# - 使用 C# 访问不同机器上的文件的正确方法

c# - 为什么 Newtonsoft 反序列化器不反序列化智能 getter?

asp.net - 如何在asp.net mvc中使用请求体

c# - 使用 json.net 反序列化空正则表达式属性