JSON parsing in java: Malformed JSON: Unexpected "C"

Good day,

I am parsing JSON in java (notification from cisco CMX system). At one time, I parsed a lot of JSON, but this person refuses to understand. I tried several methods: soft mode reader, simple gson, etc.

JSON parsing I am valid according to jsonlint, which makes me think that this is a problem with the parser or maybe some hidden characters that I cannot fix. This I get:

{
"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"
}

It seems correct to me, and the object that I am trying to analyze has the correct fields. I tried to filter out \ r \ t \ n \ 0 and some combinations between them.

The code I currently have in 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);

: - , ​​? , ? ?

EDIT: clientinfo ( lombok, ):

@ToString
@FieldDefaults(level = AccessLevel.PUBLIC)
public class ClientInfo {
    String startTime;
    String previousEndDate;
    String startDate;
    String title;
    Integer executionTime;
    Value value;
    Area [] areas;
    String previousStartDate;
    String endDate;
    String endTime;
}

public class Value {
    public Visitors primary;
    public Visitors average;
    public Visitors previousTimeRange;
}

@FieldDefaults(level = AccessLevel.PUBLIC)
public class Area {
    Integer id;
    String name;
}
@FieldDefaults(level = AccessLevel.PUBLIC)
public class Visitors {

    String title;
    Integer value;
    Integer peakValue;
    Record [] breakdown;
}
public class Record {
    public String title;
    public Integer value;
}

+4
2

.

, , , JSON, json, .

, , , json .

, .

,

0
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);

.

0

Source: https://habr.com/ru/post/1629349/


All Articles