2015-05-21 4 views
-1

Мне нужно разобрать следующий json и получить все значения. Кажется, у меня ничего не получается, кроме System.NullReferenceException. У меня есть еще один класс Searcher, который обрабатывает Jsonstring.Как получить свойства от JSON в C# с помощью JSON.Net?

JSON Строка

{ 
    "Results": [ 
     { 
      "Subdivision": null, 
      "SchoolDistrict": null, 
      "MlsArea": null, 
      "ListingType": null, 
      "OfficeMLSCode": "RMLSFL", 
      "NotesToStaff": "", 
      "ShowingInstructions": "", 
      "TempNoteToStaff": "", 
      "TempNoteToStaffExpiry": "/Date(-62135596800000)/", 
      "Agents": [ 
       { 
        "FirstName": "Warren", 
        "LastName": "Tessler", 
        "AgentMlsId": "20130130001129078644000000", 
        "MlsCode": "RMLSFL", 
        "Role": 1, 
        "IsPrimary": true, 
        "Phones": [ 
         { 
          "Phone": "(312) 568-8028" 
         } 
        ] 
       } 
      ], 
      "Contacts": [], 
      "RecordStatus": "1", 
      "CustomerIds": [ 
       120204 
      ], 
      "ApptCenters": [ 
       89916 
      ], 
      "FriendlyMlses": [ 
       "AAOR", 
       "BCMLS", 
       "DBAAR", 
       "FCAOR", 
       "FLL", 
       "GAN", 
       "HER", 
       "HLN", 
       "INSP-APP", 
       "MARCOMUL", 
       "MFR", 
       "MRT", 
       "NEF", 
       "NFL", 
       "NON-MLS", 
       "SASJ", 
       "SEF", 
       "SUNSHINE", 
       "VER", 
       "RMLSFL" 
      ], 
      "HasListingContract": true, 
      "HasSalesContract": false, 
      "IsActive": true, 
      "IsPending": false, 
      "IsPendingBackupContract": false, 
      "ApptType": "6", 
      "No3rdPartyAppts": false, 
      "CanAppraise": false, 
      "CanInspect": false, 
      "UnmatchedPhones": [], 
      "ListingId": 19758498, 
      "MLSListingId": "R9978682", 
      "MLSCode": "RMLSFL", 
      "MLSName": "Regional MLS of Florida", 
      "OfficeMLSId": "20130129223934949378000000", 
      "StreetNumber": null, 
      "StreetDirection": null, 
      "StreetName": "3611 NW 21ST ST", 
      "StreetSuffix": null, 
      "Unit": null, 
      "City": null, 
      "State": "FL", 
      "ZipCode": "33066", 
      "ListingPrice": "1890", 
      "Wizardized": false, 
      "IsShowable": true, 
      "MLSStatus": "ACT", 
      "InHouseStatus": null, 
      "Latitude": 26.2547, 
      "Longitude": -80.17402 
     } 
    ], 
    "TotalResults": 1, 
    "MilliSeconds": 80 
}   

Это то, что я до сих пор:

class Properties 
{ 
    Searcher searcher = new Searcher(); 
    WebClient wc = new WebClient(); 
    public JObject parsedStr {get; set;} 

    public void test() 
    { 
     var json = wc.DownloadString(searcher.JsonString); 
     parsedStr = JObject.Parse(json); 

     foreach (JToken child in parsedStr.Children()) 
     { 
      var prop = child as JProperty; 
      Console.WriteLine(prop); 
     }   
    } 
} 
+0

Я хотел бы посмотреть документацию для Json.NET http://www.newtonsoft.com/json/help/html/SerializingJSON.htm – Cory

+0

Что вы подразумеваете под «получить все значения»? Вы проанализировали JSON на «JObject», так что он содержит все значения в иерархии объектов. Что вы хотите с ними делать? – dbc

+0

Я имел в виду от вышеупомянутого Json, мне нужно выводить значения для всех свойств (подразделение, школьный округ и т. Д.) – Atit

ответ

1

Если вы просто хотите выводить свойства с примитивными значениями (т.е. не массивы или вложенные объекты) делать:

 var query = parsedStr.Descendants().OfType<JProperty>().Where(p => p.Value.Type != JTokenType.Array && p.Value.Type != JTokenType.Object); 
     foreach (var property in query) 
      Console.WriteLine(property); 

Если вы хотите вывести все свойства, даже те, чьи значения являются массивами или вложенными объектами, удалите пункт Where.

+0

Спасибо, но это ничего не печатает. Также Descendants() недоступен в intellisense, а не в библиотеке C#. Нужна ли мне какая-то ссылка? – Atit

+0

['Descendants()'] (http://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JContainer_Descendants.htm) - это метод в 'JObject'. Какую версию Json.NET вы используете? – dbc

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