繁体   English   中英

反序列化对字典的Json响应 <string, object> 引发错误:反序列化对象时意外结束

[英]Deserializing Json Response to a Dictionary<string, object> throws error : unexpected end when deserializing object

嗨,我正在尝试反序列化json响应,如下所示

{     
    [ 
        { 
            "WebCash" : { 
                "Id" : 1021,
                "RedemptionCode" : "sdfkjk",
                "PlayerCardId" : "3802",
                "Amount" : 8000,
                "Status" : 1,
                "PurchaseTimeStamp" : 1445020270,
                "RedeemTimeStamp" : 1445021971,
                "RetailerId" : "1781",
                "TerminalId" : "9",
            }, { 
                "Id" : 1160,
                "RedemptionCode" : "9123LKBJFDAXEK8194",
                "PlayerCardId" : "3802",
                "Amount" : 10000,
                "Status" : 3,
                "PurchaseTimeStamp" : 1445020270,
                "RetailerId" : "1781",
                "TerminalId" : "9",
            }
       } 
    ]
}

当我们没有不同的块时,它可以正常工作,但是当我们的响应类型为{[{,,},{,,}]}时会抛出错误

我正在使用以下代码

String Expected_Response = Response;
Dictionary<String, Object> ActualResponse_Dic = null; 
ActualResponse_Dic = JsonConvert.DeserializeObject<Dictionary<String, Object>>(ResponseValue);  //ResponseValue holds the entire Json response string

反序列化对象Path时,它将在最后一行意外的末尾引发错误。

我同意艾米提供的评论。 请尝试以下操作:

  • 拆下最外面的括号{}
  • 删除“ TerminalId”之后的逗号:“ 9”
  • 在“ WebCash”对象周围放置方括号[]:

也许像下面这样:

[{
"WebCash": [{
    "Id": 1021,
    "RedemptionCode": "sdfkjk",
    "PlayerCardId": "3802",
    "Amount": 8000,
    "Status": 1,
    "PurchaseTimeStamp": 1445020270,
    "RedeemTimeStamp": 1445021971,
    "RetailerId": "1781",
    "TerminalId": "9"
}, {
    "Id": 1160,
    "RedemptionCode": "9123LKBJFDAXEK8194",
    "PlayerCardId": "3802",
    "Amount": 10000,
    "Status": 3,
    "PurchaseTimeStamp": 1445020270,
    "RetailerId": "1781",
    "TerminalId": "9"
}]
}]

您的JSON无效。 此外, Dictionary <String,Object>可能会序列化为如下形式:

    { 
        "WebCash" : { 
            "Id" : 1021,
            "RedemptionCode" : "sdfkjk",
            "PlayerCardId" : "3802",
            "Amount" : 8000,
            "Status" : 1,
            "PurchaseTimeStamp" : 1445020270,
            "RedeemTimeStamp" : 1445021971,
            "RetailerId" : "1781",
            "TerminalId" : "9"
        }, 
        "WebCash2" : { 
            "Id" : 1160,
            "RedemptionCode" : "9123LKBJFDAXEK8194",
            "PlayerCardId" : "3802",
            "Amount" : 10000,
            "Status" : 3,
            "PurchaseTimeStamp" : 1445020270,
            "RetailerId" : "1781",
            "TerminalId" : "9"
        }
   } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM