我使用交换方法来获取一些API数据
然后我解析杰森。
我无法解析对象数据
我也使用getForObject方法。
但是那个方法没有解决。
如何获取JSON解析数据?
我确实想在“ kds”下插入本地数据库
调用其他API
String theUrl = "http://127.0.0.1:5000/api-datas";
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(new MediaType[] { MediaType.APPLICATION_JSON }));
headers.setContentType(MediaType.APPLICATION_JSON);
ResponseEntity<Entity> response = restTemplate.exchange(theUrl, HttpMethod.GET, entity, Entity.class);
--------------------------------------------------------------------------
Entity.class is
@Transient
private Object meta;
@Transient
private Object body;
@Transient
private List<EntityList> kds = new ArrayList<>();
JsonParser springParser = JsonParserFactory.getJsonParser();
Map<String, Object> map = springParser.parseMap(String.valueOf(response.getBody()));
像这样
{
“meta”:
{
"result":true,
"code":200,
"msg":"",
},
“body”:
{
“kds”:
[
{
"key":"some-keys",
"data":
{
"sender":"some-mail",
"receiver":"some-mail",
"response":”200 OK”,
"title":"some-title"
}
},
"key":"some-keys",
"data":
{
"sender":"some-mail",
"receiver":"some-mail",
"response":”200 OK”,
"title":"some-title"
}
},
}
]
}
}
答案 0 :(得分:0)
我从您的问题中了解到,您正在调用resttemplate execute方法,并且在将响应作为json获得后,您想粘贴json并插入db中, 您可以查看objectmapper来解析json并获取一些特定的代码值,例如您的“ kds”
您可以尝试
ObjectMapper objectMapper = new ObjectMapper();
JsonNode Node = objectMapper.readTree(response.getBody());
JsonNode rootList = Node.path("body").path("kds");
ObjectReader reader = objectMapper.readerFor(new TypeReference<List<EntityList>>() {
});
List<EntityList> listOfValues = reader.readValue(rootList);
答案 1 :(得分:0)
也许您这样使用
JSONParser paser = new JSONParser();
JSONObject obj = (JSONObject) paser.parse(response.getBody());
JSONObject parse_meta = (JSONObject) obj.get("meta");
JSONObject parse_body = (JSONObject) obj.get("body");
JSONArray parse_kds = (JSONArray ) parse_body.get("kds");
parse_kds.stream().forEach(
(getKds)->{
JSONObject parse_key = (JSONObject) getKds;
JSONObject parse_data = (JSONObject) getKds;
String key = (String) parse_key.get("key");
System.out.println(key);
}
);