2017-01-31 3 views
0

УчитываяDeserialize JSON для Disctionary объекта

{ 
    "0": [ 
     "508", 
     "New Form", 
     "New Form", 
     "SMART", { 
      "0": [ 
       "1", 
       "true" 
      ], 
      "1": [ 
       "1", 
       "true", 
       "3", 
       "true" 
      ], 
      "2": [ 
       "1", 
       "true", 
       "3", 
       "true", 
       "5", 
       "true" 
      ] 
     } 
    ], 
    "1": [ 
     "187", 
     "UserAccess", 
     "UserAccess", 
     "User Access to Smart", { 
      "0": [ 
       "1", 
       "true" 
      ] 
     } 
    ] 
} 

и я хочу Deserialize с

var _gridData = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string[]>>(griddata); 

Но это дает мне:

Ошибка чтения строки. Неожиданный токен: StartObject. Путь '0 [4], строка 1, позиция 48.

ответ

0

Ваш json не словарь, ваши значения - это не просто строки, но и объекты. Вы можете десериализации это так:

var ret = JsonConvert.DeserializeObject<Dictionary<string, object[]>>(json); 

он не будет бросать исключение, но чем вы должны решить, что делать с результатом:

enter image description here

+0

, что «0» и «1» ..... что все мои динамические объекты и что все последние поля с вложенным элементом json ваш результат дают мне, как {[0, [ «508», «Новая форма», «Новая форма», «DPD: SMART», , { "0": [ "1", "истинный" ], "1": [ "1", "истина", "3","истинный" ], "2": [ "1", "истина", "3", "истина", "5", "истинный" ] } ]]} – user3596210

+0

и я хочу результат как массив [0]: 508 [1]: NEw Form .... [4]: ​​1, true like – user3596210

+0

Это десериализует вашу структуру json. Вы можете либо изменить свой json, либо изменить десериализованные данные, чтобы получить ожидаемую структуру. –

0

Проблема заключается в том, что вы не десериализацию действующего Dictionary<string, string[]> объекта, ваш объект действительно Dictionary<string, object[]>, так как, например, для индекса data[0][3] у вас есть Dictionary<string, string[]>

+0

, что «0» и «1» ..... что все мои динамический объект, и что все они имеют последнее поле с вложенным элементом JSON – user3596210

0

string[] =>object[], потому что в прошлом Элемент не является объектом, а не строкой.

var _gridData = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object[]>>(griddata); 
+0

ваш результат дает мне как {[0, [ «508», «Новая форма», «Новый Форма», "ДПД: SMART", { "0": [ "1", "истинный" ], "1": [ "1", "истина", "3" , "true" ], "2": [ "1", "true", "3", "истинный", "5", "истинный" ] } ]]} – user3596210

+0

и я хочу привести как массив [0]: 508 [1]: NEw форма .... [4]: ​​1, true как – user3596210

+0

как я могу взять 4-й элемент как строку – user3596210

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