2015-05-22 3 views
1

Итак, мне дано дерево json, как показано ниже, и мне просто нужно получить имена людей и фамилии отсюда, но у меня возникают проблемы с анализом данных.Анализ синтаксического дерева json

{ 
    "results":[ 
     { 
     "id":{ 
     "key":"Phone.81dd6fef-a2e2-4b08-cfe3-bc7128b43786.Durable", 
     "url":"https://proapi.whitepages.com/2.1/entity/Phone.81dd6fef-a2e2-4b08-cfe3-bc7128b43786.Durable.json?api_key=", 
     "type":"Phone", 
     "uuid":"81dd6fef-a2e2-4b08-cfe3-bc7128b43786", 
     "durability":"Durable" 
     }, 
     "line_type":"Landline", 
     "belongs_to":[ 
     { 
     "id":{ 
      "key":"Person.1ffee2ef-cc88-4a1e-87b0-05349571b801.Durable", 
      "url":"https://proapi.whitepages.com/2.1/entity/Person.1ffee2ef-cc88-4a1e-87b0-05349571b801.Durable.json?api_key=", 
      "type":"Person", 
      "uuid":"1ffee2ef-cc88-4a1e-87b0-05349571b801", 
      "durability":"Durable" 
     }, 
     "type":"Full", 
     "names":[ 
      { 
      "salutation":null, 
      "first_name":"fred", 
      "middle_name":null, 
      "last_name":"jones", 
      "suffix":null, 
      "valid_for":null 
      } 
     ], 
     "age_range":null, 
     "gender":null, 
     "locations":[ 
      { 
      "id":{ 
      "key":"Location.bd4721f0-ba97-4ade-aac1-ed1f16be57ed.Durable", 
      "url":"https://proapi.whitepages.com/2.1/entity/Location.bd4721f0-ba97-4ade-aac1-ed1f16be57ed.Durable.json?api_key=", 
      "type":"Location", 
      "uuid":"bd4721f0-ba97-4ade-aac1-ed1f16be57ed", 
      "durability":"Durable" 
      }, 
      "type":"Address", 
      "valid_for":{ 
      "start":{ 
      "year":2011, 
      "month":7, 
      "day":5 
      }, 
      "stop":null 
      }, 
      "legal_entities_at":null, 
      "city":"", 
      "postal_code":"", 
      "zip4":null, 
      "state_code":"", 
      "country_code":"", 
      "address":"", 
      "house":"10", 
      "street_name":"", 
      "street_type":"Ave", 
      "pre_dir":null, 
      "post_dir":null, 
      "apt_number":null, 
      "apt_type":null, 
      "box_number":null, 
      "is_receiving_mail":false, 
      "not_receiving_mail_reason":null, 
      "usage":null, 
      "delivery_point":null, 
      "box_type":null, 
      "address_type":null, 
      "lat_long":{ 
      "latitude":, 
      "longitude", 
      "accuracy":"Street" 
      }, 
      "is_deliverable":true, 
      "standard_address_line1":"", 
      "standard_address_line2":"", 
      "standard_address_location":"", 
      "is_historical":false, 
      "contact_type":"Home", 
      "contact_creation_date":1361177323 
      } 
     ], 

код я использую до сих пор:

string url = String.Format("https://proapi.whitepages.com/2.1/phone.json?api_key={0}&phone_number={1}", WhitePagesConstants.ApiKey, number); 
    using (WebClient webClient = new System.Net.WebClient()) 
    { 
     WebClient n = new WebClient(); 
     n.Encoding = System.Text.Encoding.UTF8; 
     var json = n.DownloadString(url); 
     Dictionary<string, Object> formattedjson = JsonConvert.DeserializeObject<Dictionary<string, Object>>(json); 

    } 

Я был на этом слишком долго и должен закончить его в ближайшее время, так я прошу, пожалуйста, помогите мне пройти это дерево. Я никогда не работал с json раньше, и я совершенно не понимаю, как это сделать. Точная информация, в которой я нуждаюсь, находится под «own_to» -> «names» -> first и last. Я изменил некоторые имена, чтобы защитить невинных.

ответ

2

Если все, что вам нужно, чтобы извлечь несколько свойств, вы можете просто перемещаться по пути:

dynamic o = JsonConvert.DeserializeObject(json); 
Console.WriteLine(o.results[0].belongs_to[0].names[0].first_name); 
Console.WriteLine(o.results[0].belongs_to[0].names[0].last_name); 

Или, если вы предпочитаете струнные словари над динамическими объектами:

JObject j = JsonConvert.DeserializeObject<JObject>(json); 
Console.WriteLine(j["results"][0]["belongs_to"][0]["names"][0]["first_name"]); 
Console.WriteLine(j["results"][0]["belongs_to"][0]["names"][0]["last_name"]); 

P.S. Ваш JSON сломан. Мне было бы легче проверить код, если бы вы предоставили правильный пример.

+0

Извините за JSON. Я попробую позже сегодня вечером, чтобы положить все это. – Resistance

+0

@TravisStauffer Я исправил JSON, и он работает. Я не могу быть абсолютно уверен, что это сработает для вас. – Athari

+0

Я только что получил возможность проверить его, и он отлично работает :) Спасибо. – Resistance

Смежные вопросы