【问题标题】:Deserialize complex JSON object using ASP.NET?使用 ASP.NET 反序列化复杂的 JSON 对象?
【发布时间】:2010-02-02 18:27:11
【问题描述】:

我已经成功地创建了序列化复杂 javascript 对象并将其发布到 ASP.NET 页面的代码。我可以使用 Request.Form 获取 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:对象引用未设置为对象的实例。]

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

提前致谢! /托马斯·卡恩

【问题讨论】:

  • 你能告诉我们你的反序列化代码吗?

标签: c# javascript json serialization


【解决方案1】:

使用 stringify 代替序列化

【讨论】:

    【解决方案2】:

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

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

    显然,您必须填写有关如何获取表单字段以及解析的包和方法的空白。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多