2010-02-02 48 views
1

我已经成功创建了一个代码,它将一个复杂的JavaScript对象序列化并将其发布到ASP.NET页面。我可以用得到的Request.Form JSON字符串,结果看起来像这样(我已经添加了可读性缩进):使用ASP.NET反序列化复杂的JSON对象?

{ 
    "gasterPerStolPerVecka": { 
     "name": "gasterPerStolPerVecka", 
     "keyValue_id": "2", 
     "set_id": "1", 
     "containerElement": "#gasterPerStolPerVecka", 
     "keyValueComponents": [ 
      { 
       "name": "gasterPerStolPerVecka_guestsPerWeek", 
       "value": "200" 
      }, 
      { 
       "name": "gasterPerStolPerVecka_numberOfChairs", 
       "value": "100" 
      } 
     ], 
     "keyValueUnitText": "gäster/stol per vecka", 
     "keyValueCalculationMethod": "divide", 
     "isValid": true, 
     "result": 2 
    }, 
    "tillgangligaStolstimmarPerVecka": { 
     "name": "tillgangligaStolstimmarPerVecka", 
     "keyValue_id": "1", 
     "set_id": "1", 
     "containerElement": "#tillgangligaStolstimmarPerVecka", 
     "keyValueComponents": [ 
      { 
       "name": "tillgangligaStolstimmarPerVecka_openHoursPerWeek", 
       "value": "35" 
      }, 
      { 
       "name": "tillgangligaStolstimmarPerVecka_numberOfChairs", 
       "value": "100" 
      } 
     ], 
     "keyValueUnitText": "stolstimmar/vecka", 
     "keyValueCalculationMethod": "multiply", 
     "isValid": true, 
     "result": 3500 
    }, 
    "planeradIntaktPerTillgangligStolOchVecka": { 
     "name": "planeradIntaktPerTillgangligStolOchVecka", 
     "keyValue_id": "", 
     "set_id": "", 
     "containerElement": "#planeradIntaktPerTillgangligStolOchVecka", 
     "keyValueComponents": [ 
      { 
       "name": "planeradIntaktPerTillgangligStolOchVecka_weeklyRevenue", 
       "value": "" 
      }, 
      { 
       "name": "planeradIntaktPerTillgangligStolOchVecka_numberOfChairs", 
       "value": "100" 
      } 
     ], 
     "keyValueUnitText": "kr", 
     "keyValueCalculationMethod": "divide", 
     "isValid": false, 
     "result": null, 
     "errorText": "Ofullständigt underlag för beräkning." 
    }, 
    "planeradIntaktPerTillgangligaStolstimmar": { 
     "name": "planeradIntaktPerTillgangligaStolstimmar", 
     "keyValue_id": "", 
     "set_id": "", 
     "containerElement": "#planeradIntaktPerTillgangligaStolstimmar", 
     "keyValueComponents": [ 
      { 
       "name": "planeradIntaktPerTillgangligaStolstimmar_weeklyRevenue", 
       "value": "" 
      }, 
      { 
       "name": "planeradIntaktPerTillgangligaStolstimmar_openHoursPerWeek", 
       "value": "35" 
      }, 
      { 
       "name": "planeradIntaktPerTillgangligaStolstimmar_numberOfChairs", 
       "value": "100" 
      } 
     ], 
     "keyValueUnitText": "kr", 
     "keyValueCalculationMethod": "divide_divide", 
     "isValid": false, 
     "result": null, 
     "errorText": "Ofullständigt underlag för beräkning." 
    } 
} 

现在我尝试反序列化这个在服务器端,但是很难。我不断收到错误:

[的NullReferenceException:未将对象引用设置到对象的实例。]

我不知道从哪里开始寻找错误?

在此先感谢! /Thomas Kahn

+1

你能告诉我们你的反序列化代码吗? – Matt 2010-02-02 18:42:47

回答

0

您需要使用ASP.NET的反序列化库。请参阅http://json.org/了解可用的库,或者可能有内置于ASP.NET的库。无论哪种方式,代码如下:

String s = getAppropriateFormField(); 
Object o = JSONLibraryPackage.parse(s); 

很明显,您必须在空白处填写你怎么弄的窗体域,然后什么包和方法做了解析。

相关问题