Java从JSON提取数据不起作用

时间:2018-12-19 01:59:19

标签: java json

尝试从JSON提取信息时遇到了一些问题。这是我的JSON示例:

// removed

我的responseMessage只是一个字符串。还有我提取信息的代码:

// removed 

我尝试遵循this thread中的解决方案,但是没有打印出任何内容,也没有错误消息。有关如何解决此问题的任何想法?谢谢!

编辑

我意识到问题是由于以下错误引起的:java.lang.ClassCastException: org.json.simple.JSONObject cannot be cast to org.json.JSONObject

但是,如果我将JSONObject的导入更改为import org.json.simple.JSONObject;,则上面的代码将中断。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

如评论中所述,以下代码正在使用gson

JsonParser parser = new JsonParser();
JsonObject root =  (JsonObject) parser.parse(json);
JsonArray schedulesArray = root.getAsJsonObject("response").getAsJsonArray("schedules");
JsonObject firstSchedule = (JsonObject) schedulesArray.get(0);
String userName = firstSchedule.get("username").getAsString();

答案 1 :(得分:-1)

我有一个“愚蠢”的方法。首先,您应该创建三个DTO,如下所示:

public class Schedule {
    private String username;
    private String scheduleId;
    private String SCHEDULEsTARTtIME;
    private String NOTES;
    private String familyName;
    private String principalId;
    private String friendlyName;
    private String scheduleEndTime;

    // get set methods
}

public class ResponseInfo {
    private String instrumentName;
    private String instrumentId;
    private String instrumentType;
    private List<Schedule> schedules;
}

public class Response {
    private ResponseInfo response;
}

然后,将响应字符串转换为Response DTO

Response newResponse = mapper.readValue(content,Response.class);

答案 2 :(得分:-1)

JSONArray schedulesArray = root.getJSONArray("schedules");

将其替换为以下内容:

JSONObject response = root.getJSONObject("response");
JSONArray schedulesArray = response.getJSONArray("schedules");

然后重试。