将json数据解析为动态对象

时间:2014-07-08 14:50:35

标签: c# asp.net json

我正在尝试解析以下json数据,但我收到以下错误:

  

传入的数组无效,','预期。 (19):{' 2':{' 2_1':[0:244,   1:837],' 2_2':[0:333,1:444]}}

代码

var jsonData = @"{ '2': { '2_1': [0: 244, 1: 837], '2_2': [0: 333, 1: 444] } }";
JavaScriptSerializer j = new JavaScriptSerializer();
var x = (Dictionary<string, List<object>>)j.DeserializeObject(jsonData);

任何帮助?

更新:

更改为:

string jsonData = @"{ 'Two': { 'Two_1': [{0: 244}, {1: 837}], 'Two_2': [{0: 333}, {1: 444}] } }";

但现在我收到以下错误:

  

无法投射类型的对象   System.Collections.Generic.Dictionary'2[System.String,System.Object]   输入System.Collections.Generic.Dictionary'2[System.String,System.Collections.Generic.List'1[System.Object]]

2 个答案:

答案 0 :(得分:1)

您的JSON无效。如果你有对象数组,那么它应该看起来像

[{'0' : 244}, {'1': 837}]

请参阅JSON syntax

  

对象是一组无序的名称/值对。一个对象开始   用{(左括号)和以}结尾(右括号)。每个名字都是   后跟:(冒号)和名称/值对分开,   (逗号)。

另请注意,名称应为字符串。


更正JSON:

{'2': {'2_1': [{'0': 244}, {'1': 837}], '2_2': [{'0': 333}, {'1': 444}]}}

答案 1 :(得分:0)

也许是因为你有两个数字0和1作为名字? (“0”表示244&amp; 333,“1”表示837&amp; 444)