2015-11-11 4 views
1

Я получаю ответ JSON от сервера, но JSON не в одном формате. Поэтому, очевидно, нет смысла создавать классы для десериализации. Итак, я попытался использовать dynamic, но я не могу прочитать ответ.C# Parse Dynamic JSON string

Образец JSON Строка

" {"hm_xytrict":"HM Tricky District - oop","hmSD":"HM Pool District"}" 

Обратите внимание, что "hm_xytrict" и "hmSD" будет отличаться каждый раз, когда

Я использую

dynamic jsonResponse = JsonConvert.DeserializeObject(responseString); 

Для этого конкретного случая смогу используйте jsonResponse.hm_xytrict и jsonResponse.hmSD, но так как они также динамичны, так как я могу читать jsonResponse для всех случаев.

Спасибо, Хамза

+0

Использовать JObject вместо этого? –

ответ

3

Таким образом, вы можете использовать другую часть Json.NET API для анализа и извлечения данных из объекта:

var jObj = JObject.Parse(json); 
foreach (JProperty element in jObj.Children()) 
{ 
    string propName = element.Name; 
    var propVal = (string)element.Value; 
} 
+1

Даже не нужно читать отдельные элементы, вы можете десериализоваться на динамические с JSON.net http://stackoverflow.com/questions/4535840/deserialize-json-object-into-dynamic-object-using-json-net –

+0

Awesome. Отлично работает :) – Hamza

0

Еще более интересным, вы можете непосредственно разобрать строка JSON для динамического объекта

string responseString = @"{""hm_xytrict"":""HM Tricky District - oop"",""hmSD"":""HM Pool District""}"; 

dynamic jsonResponse = JObject.Parse(responseString); 
foreach (var item in jsonResponse) 
{ 
    Console.WriteLine(item.Name); 
    Console.WriteLine(item.Value); 
} 

Что в вашем примере будет выводить

hm_xytrict 
HM Tricky District - oop 
hmSD 
HM Pool District