JSON.NET在缺少逗号时抛出异常

时间:2014-01-30 23:46:05

标签: c# json json.net

我正在使用JSON.NET对json文件进行反序列化,很少有文件在其值之后可能没有逗号后面的逗号。这导致了一个令人兴奋的事情,因为它需要一个逗号。我正在查看JSON.NET文档,找不到我可以指定仍然解析该字段的选项。

JSON.NET中有没有办法不用担心尾随逗号?

下面,假设一个字段的末尾不包含逗号,则抛出异常。

 {
        "Rack": "0015",
        "SampleType": "Specimen",
        "SID": "HBSAG-PC",
        "Position": 4,
        "AssayNumber": 149,
    "AssayVersion": 5,
        "Dilution": 1,
        "Replicate": 5
    "Track": 1,
    "Lane": 1,
        "ReagentMasterLot": "08559LF00",
        "ReagentSerialNumber": 65000,
        "Comment": "HBSAG Q IIPC"
    }

2 个答案:

答案 0 :(得分:1)

您发布的JSON无效。不是因为末尾有逗号,而是中心缺少逗号

{
    "Rack": "0015",
    "SampleType": "Specimen",
    "SID": "HBSAG-PC",
    "Position": 4,
    "AssayNumber": 149,
    "AssayVersion": 5,
    "Dilution": 1,
    "Replicate": 5
    "Track": 1,
    "Lane": 1,
    "ReagentMasterLot": "08559LF00",
    "ReagentSerialNumber": 65000,
    "Comment": "HBSAG Q IIPC"
}

此行"Replicate": 5"Track": 1,在' 5'之间缺少逗号。和"跟踪"。

纠正的Json看起来像这样:

{
    "Rack": "0015",
    "SampleType": "Specimen",
    "SID": "HBSAG-PC",
    "Position": 4,
    "AssayNumber": 149,
    "AssayVersion": 5,
    "Dilution": 1,
    "Replicate": 5,
    "Track": 1,
    "Lane": 1,
    "ReagentMasterLot": "08559LF00",
    "ReagentSerialNumber": 65000,
    "Comment": "HBSAG Q IIPC"
}

您可以使用JSONLint验证您的JSON。

答案 1 :(得分:0)

JSON spec要求对象中的名称/值对在它们之间使用逗号。 (另见JSON.org)。如果缺少逗号,则JSON无效。因此,任何符合标准的解析器都会抛出异常,包括JSON.Net。没有选项可以忽略丢失的逗号。您需要在源处修复JSON。