我正在使用 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/