8

次の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は失敗します:
ユーザーがフォームを編集すると、データはクライアント側でシリアル化されて返送されます...ここで、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: ."}
4

2 に答える 2

11

"ClientKey":、値がありません

http://www.jsonlint.com/

于 2011-04-07T19:37:06.310 に答える
11

値がないだけでClientKeyなく、キーと値を二重引用符()で囲まないことにより、JSONの有効性を危険にさらすことになります""

キーは問題ありませんが、string値は二重引用符で囲む必要があります。JSON Webサイトを見て、許可されているものと許可されていないものを確認してください。

于 2011-04-07T19:38:40.807 に答える