尝试从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;
,则上面的代码将中断。有什么想法吗?
答案 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");
然后重试。