为什么这个JSON返回为"无效的JSON原语"?

Pri*_*ERO 8 asp.net serialization json deserialization

以下JSON未反序列化.这显然是因为DECIMALS在保存JSON中.我该如何解决?

这个初始JSON来自服务器和IS VALID:

    {
    "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' 
    }
Run Code Online (Sandbox Code Playgroud)

这个随后的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' 
    }
Run Code Online (Sandbox Code Playgroud)

此代码抛出错误:

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

抛出的错误看起来像:

{"Invalid JSON primitive: ."}
Run Code Online (Sandbox Code Playgroud)

Jam*_*urz 11

"ClientKey":没有价值

http://www.jsonlint.com/

  • 酷JSON验证器! (6认同)

dar*_*ioo 11

不仅ClientKey没有价值,而且你还没有将键和值放在双引号mark("")中,从而冒着JSON有效性的风险.

您的密钥没问题,但string值必须用双引号括起来.看看JSON网站,看看哪些是允许的,哪些不是.