2

JSON 文字列を解析するために Json.NET を使用していますが、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文字列を解析するJSON.NETに何か問題があるため、私は完全に混乱しています

4

2 に答える 2

2

参照: XML の XPath、SelectNodes、SelectSingleNode に相当する JSON.NET は何ですか?

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);
}
于 2013-07-07T20:00:41.593 に答える