2013-10-25 3 views
2

У меня есть этот код для получения значений из строки json.JSON.NET - распознавание вложенного массива

 var json = @"[{""property"":""Status"",""value"":""val""}]"; 

     var jArray = JArray.Parse(json); 

     foreach (JToken jToken in jArray) 
     { 
      var property = jToken.Value<string>("property"); 
      var value = jToken.Value<string>("value");    
     } 

Это изделие идеально подходит для ввода данных. Но в некоторых ситуациях свойство value может содержать массив.

 var json = @"[{""property"":""Status"",""value"":[1,2]}]"; 

Я хотел бы как-то проверить, содержит ли значение простое значение или массив. Если значение представляет собой массив, привяжите его к коллекции.

Возможно ли это используя JSON.net?

+1

Это другой галс на нем, но я использую изменение кода здесь: http://stackoverflow.com/questions/3142495/deserialize-json-into-c-sharp-dynamic-object. Если вам это нравится, я отправлю свою версию кода (он исправляет некоторые ошибки, в том числе, я считаю, тот, который включает либо содержащиеся массивы, либо содержащиеся объекты. Не могу вспомнить, какой.) – Pete

ответ

6
dynamic value = jToken["value"]; 
if (value is JArray) 
    // do something 

(вы можете использовать object вместо dynamic в моем примере, но dynamic может быть легче работать с позже)

+1

FYI, вы также можете использовать ' if (value.Type == JTokenType.Array) '. –

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