用java解析JSON:格式错误的JSON:Unexpected';C';

用java解析JSON:格式错误的JSON:Unexpected';C';,java,json,parsing,gson,Java,Json,Parsing,Gson,你好 我正在用java解析一些JSON(来自cisco CMX系统的通知)。在我的时间里,我已经解析了很多JSON,但是这个拒绝被解析。我试过几种方法:一个宽松模式的阅读器,普通的gson,等等 根据jsonlint,我解析的JSON是有效的,这让我相信这是解析器的问题,或者可能是一些我无法清除的隐藏字符。这是我收到的JSON: { "startTime": "08:00", "previousEndDate": null, "startDate": "2016-02-17", "title":

你好

我正在用java解析一些JSON(来自cisco CMX系统的通知)。在我的时间里,我已经解析了很多JSON,但是这个拒绝被解析。我试过几种方法:一个宽松模式的阅读器,普通的gson,等等

根据jsonlint,我解析的JSON是有效的,这让我相信这是解析器的问题,或者可能是一些我无法清除的隐藏字符。这是我收到的JSON:

{
"startTime": "08:00",
"previousEndDate": null,
"startDate": "2016-02-17",
"title": "Visitors",
"executionTime": 29,
"value": {
    "primary": {
        "title": "TotalVisitors",
        "value": 16,
        "peakValue": 0,
        "breakdown": [{
            "title": "RepeatVisitors",
            "value": 11
        }, {
            "title": "NewVisitors",
            "value": 5
        }]
    },
    "average": {
        "title": "TotalVisitors",
        "value": 19,
        "peakValue": 0,
        "breakdown": [{
            "title": "RepeatVisitors",
            "value": 15
        }, {
            "title": "NewVisitors",
            "value": 4
        }]
    },
    "previousTimeRange": {
        "title": "TotalVisitors",
        "value": 23,
        "peakValue": 0,
        "breakdown": [{
            "title": "RepeatVisitors",
            "value": 19
        }, {
            "title": "NewVisitors",
            "value": 4
        }]
    }
},
"areas": [{
    "id": 20,
    "name": "CineCitta"
}],
"previousStartDate": "2016-02-16",
"endDate": null,
"endTime": "09:29"
}
它对我来说似乎有效,并且我试图将其解析为的对象具有正确的字段。 我已尝试筛选出\r\t\n\0以及它们之间的一些组合

我目前在java中的代码是:

    String result = "{\"startTime\":\"08:00\",\"previousEndDate\":null,\"startDate\":\"2016-02-17\",\"title\":\"Visitors\",\"executionTime\":29,\"value\":{\"primary\":{\"title\":\"TotalVisitors\",\"value\":16,\"peakValue\":0,\"breakdown\":[{\"title\":\"RepeatVisitors\",\"value\":11},{\"title\":\"NewVisitors\",\"value\":5}]},\"average\":{\"title\":\"TotalVisitors\",\"value\":19,\"peakValue\":0,\"breakdown\":[{\"title\":\"RepeatVisitors\",\"value\":15},{\"title\":\"NewVisitors\",\"value\":4}]},\"previousTimeRange\":{\"title\":\"TotalVisitors\",\"value\":23,\"peakValue\":0,\"breakdown\":[{\"title\":\"RepeatVisitors\",\"value\":19},{\"title\":\"NewVisitors\",\"value\":4}]}},\"areas\":[{\"id\":20,\"name\":\"CineCitta\"}],\"previousStartDate\":\"2016-02-16\",\"endDate\":null,\"endTime\":\"09:29\"}";
    JsonReader reader = new JsonReader(new StringReader(result));
    reader.setLenient(true);

    Gson gson = new Gson();
    ClientInfo info = gson.fromJson(reader, ClientInfo.class);
问题是:有人知道如何调试这样的问题吗?我可以使用消毒技术吗?其他解析器

编辑:根据请求将代码添加到clientinfo(使用project lombok,所有字段都是公共的):

谢谢,再见

String result = "{\"startTime\":\"08:00\",\"previousEndDate\":null,\"startDate\":\"2016-02-17\",\"title\":\"Visitors\",\"executionTime\":29,\"value\":{\"primary\":{\"title\":\"TotalVisitors\",\"value\":16,\"peakValue\":0,\"breakdown\":[{\"title\":\"RepeatVisitors\",\"value\":11},{\"title\":\"NewVisitors\",\"value\":5}]},\"average\":{\"title\":\"TotalVisitors\",\"value\":19,\"peakValue\":0,\"breakdown\":[{\"title\":\"RepeatVisitors\",\"value\":15},{\"title\":\"NewVisitors\",\"value\":4}]},\"previousTimeRange\":{\"title\":\"TotalVisitors\",\"value\":23,\"peakValue\":0,\"breakdown\":[{\"title\":\"RepeatVisitors\",\"value\":19},{\"title\":\"NewVisitors\",\"value\":4}]}},\"areas\":[{\"id\":20,\"name\":\"CineCitta\"}],\"previousStartDate\":\"2016-02-16\",\"endDate\":null,\"endTime\":\"09:29\"}";

Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonObject jsonObj = parser.parse(result).getAsJsonObject();
ClientInfo info = gson.fromJson( jsonObj , ClientInfo.class);
你可以试试上面的代码

我是个傻瓜

我假设解析出了问题,但实际上我的服务应该生成一个JSON,我没有将其作为JSON返回,而是对象本身导致了错误的解析

因为我非常关注我正在做的解析,所以我没有意识到错误本身发生在restful服务的隐式json解析上

这将教会我在将代码移动到restful客户端之前不要在简单的环境中进行测试

谢谢你和你的问候


Dries

请显示ClientInfo类的代码其他解析器:有Moshi(按正方形)-但不知道这是否会更好。我添加了ClientInfo的代码及其引用的类。结果是same@DriesDeRydt:然后您需要检查
clientinfo
类代码。
String result = "{\"startTime\":\"08:00\",\"previousEndDate\":null,\"startDate\":\"2016-02-17\",\"title\":\"Visitors\",\"executionTime\":29,\"value\":{\"primary\":{\"title\":\"TotalVisitors\",\"value\":16,\"peakValue\":0,\"breakdown\":[{\"title\":\"RepeatVisitors\",\"value\":11},{\"title\":\"NewVisitors\",\"value\":5}]},\"average\":{\"title\":\"TotalVisitors\",\"value\":19,\"peakValue\":0,\"breakdown\":[{\"title\":\"RepeatVisitors\",\"value\":15},{\"title\":\"NewVisitors\",\"value\":4}]},\"previousTimeRange\":{\"title\":\"TotalVisitors\",\"value\":23,\"peakValue\":0,\"breakdown\":[{\"title\":\"RepeatVisitors\",\"value\":19},{\"title\":\"NewVisitors\",\"value\":4}]}},\"areas\":[{\"id\":20,\"name\":\"CineCitta\"}],\"previousStartDate\":\"2016-02-16\",\"endDate\":null,\"endTime\":\"09:29\"}";

Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonObject jsonObj = parser.parse(result).getAsJsonObject();
ClientInfo info = gson.fromJson( jsonObj , ClientInfo.class);