Десериализовать сложный объект JSON, используя ASP.NET? - PullRequest
1 голос
/ 02 февраля 2010

Я успешно создал код, который сериализует сложный объект JavaScript и публикует его на странице ASP.NET. Я могу получить строку JSON, используя Request.Form, и результат выглядит следующим образом (я добавил отступ для удобства чтения):

    {
    "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: ссылка на объект не установлена ​​для экземпляра объекта.]

Не знаю, с чего начать поиск ошибок?

Заранее спасибо! / Томас Кан

Ответы [ 2 ]

1 голос
/ 02 февраля 2010

используйте stringify вместо сериализации

0 голосов
/ 02 февраля 2010

Вам необходимо использовать библиотеку десериализации для ASP.NET. Смотрите http://json.org/ для доступных библиотек или, может быть, есть одна встроенная в ASP.NET. В любом случае код будет выглядеть так:

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

где, очевидно, вам придется заполнить пробелы, чтобы узнать, как получить поле формы, а затем, какой пакет и метод выполняет синтаксический анализ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...