JSON响应的格式无效?

时间:2016-10-31 17:04:37

标签: c# json

我在尝试反序列化从外部源接收的JSON时遇到问题。我不确定,但我认为可能是JSON本身错了,否则我做错了。有人可以对此有所了解吗?

这是我收到的JSON:

{"results": {"result": 32}},{"statistics": {"positive": 47.3,"negative": 49.6,"breakeven": 3.1}}

这些是我的课程:

public class dataClass
{
    public resultsClass results { get; set; }
    public statisticsClass statistics { get; set; }
}

public class resultsClass
{
    public int result { get; set; }
}

public class statisticsClass
{
    public Double? positive { get; set; }
    public Double? negative { get; set; }
    public Double? breakeven { get; set; }
}

这就是我反序列化的方式:

dataClass output = JsonConvert.DeserializeObject<dataClass>(response);

当我尝试反序列化时,我收到错误:

  

完成阅读JSON内容后遇到的其他文字

我已将其归结为结果与统计数据之间的逗号。我认为结果的最后括号和统计数据的开头不应该存在。

还是我反序列化错误?

2 个答案:

答案 0 :(得分:4)

您的JSON格式不正确。
根据{{​​3}}验证:

Error: Parse error on line 5:
...     "result": 32    }}, {   "statistics": {
--------------------^
Expecting 'EOF', got ','

这有效:

{
    "results": {
        "result": 32
    },
    "statistics": {
        "positive": 47.3,
        "negative": 49.6,
        "breakeven": 3.1
    }
}

答案 1 :(得分:1)

如果你将json解析为文本编辑器,你可以看到在该响应中你有双根元素。结果,统计数据是分开的。

你必须选择:

  1. 分隔字符串json: 您必须拆分两个根元素并为每个根元素配置JsonConvert.DeserializeObject<dataClass>(response);
  2. 修改json响应结构(推荐): json的反应错了!! ,如果您是回复的所有者,则可以修改对此的回复:{ "results": { "result": 32 }, "statistics": { "positive": 47.3, "negative": 49.6, "breakeven": 3.1 } }并且应该使用您的代码。
  3. 此致