Почему этот JSON возвращается как «Недопустимый примитив JSON»? - PullRequest
8 голосов
/ 07 апреля 2011

Следующий JSON не десериализуется. Это очевидно, потому что DECIMALS в сохранении JSON. Как мне это исправить?

Этот исходный JSON исходит от сервера и является действительным:

    {
    "AppropriationAmount": 25000000, 
    "AppropriationHours": 56300, 
    "ArrThreshold": 11, 
    "ClientKey": 24, 
    "Description": 'Find and incarcerate the escaped prisoner', 
    "DirectHours": 50000, 
    "EndDate": '3/31/2011', 
    "EngineeringHours": 4000, 
    "IndirectHours": 2000, 
    "Key": 1589, 
    "Number": '0', 
    "OtherHours": 300, 
    "ProductivityCurveType": 'BurnedEarned', 
    "ProjectManager": 'Doctor Who', 
    "ProjectName": 'Prisoner ZERO', 
    "StartDate": '5/1/2010' 
    }

Этот последующий JSON отправлен на сервер FAILS:
После того, как пользователь отредактирует форму, данные сериализуются на стороне клиента и отправляются НАЗАД ... там, где (тогда) происходит сбой при попытке десериализации JSON.

    {
    "AppropriationAmount": 56300.00, 
    "AppropriationHours": 25000000.00, 
    "ArrThreshold": 11.00, 
    "ClientKey": , 
    "Description": 'Find and incarcerate the escaped prisoner', 
    "DirectHours": 50000.00, 
    "EndDate": '3/31/2011', 
    "EngineeringHours": 4000.00, 
    "IndirectHours": 2000.00, 
    "Key": 1589, 
    "Number": '0', 
    "OtherHours": 300.00, 
    "ProductivityCurveType": 'BurnedEarned', 
    "ProjectManager": 'Doctor Who', 
    "ProjectName": 'Prisoner ZERO', 
    "StartDate": '5/1/2010' 
    }

Этот код выдает ошибку:

    try
    {
        if (!String.IsNullOrEmpty(this.JSON))
        {
            serializer = new JavaScriptSerializer();
            dialog = serializer.Deserialize<ProjectDecorator>(this.JSON);
        }
    }
    catch (Exception ex)
    {
        // The message shows here
    }

Сгенерированная ошибка выглядит следующим образом:

{"Invalid JSON primitive: ."}

Ответы [ 2 ]

11 голосов
/ 07 апреля 2011

Мало того, что ClientKey не имеет никакого значения, вы рискуете допустимостью JSON, не помещая ключи и значения в двойные кавычки ("").

Ваши ключи в порядке, но значения string должны быть заключены в двойные кавычки. Загляните на сайт JSON , чтобы узнать, что разрешено, а что нет.

11 голосов
/ 07 апреля 2011

"ClientKey": не имеет значения

http://www.jsonlint.com/

...