2010-02-02 80 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); 

很明顯,您必須在空白處填寫你怎麼弄的窗體域,然後什麼包和方法做了解析。