2017-01-31 124 views
0

鉴于反序列化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" 
      ] 
     } 
    ] 
} 

,我想用

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]:新形式.... [4]:1,真如 – 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”, “新窗体”, “新表”, “DPD:SMART”, { “0”:[ “1”, “真” ], “1”:[ “1”, “真”, “3” , “true” ], “2”:[ “1”, “true”, “3”, “真”, “5”, “真” ] } ]]} – user3596210

+0

,我想导致状阵列[0]:508 [1]:新的窗体... [4]:1,真如 – user3596210

+0

我怎样才能把第四个元素作为字符串 – user3596210