@Test
public void test(){
Json userJson = new Json<>();
Hit hit = new Hit<>();
hit.setId("1");
hit.setData(new User(20, "jack"));
Hits userHits = new Hits<>();
userHits.setFound(1);
userHits.setStart(2);
ArrayList> hitArrayList = new ArrayList<>();
hitArrayList.add(hit);
userHits.setHit(hitArrayList);
userJson.setHits(userHits);
try {
String userJsonString = JsonUtils.getMapper().writerWithDefaultPrettyPrinter().writeValueAsString(userJson);
System.out.println(String.format("hit to jsonString:\n%s", userJsonString));
Json readValue = JsonUtils.getMapper().readValue(userJsonString, new TypeReference>(){});
System.out.println(readValue.getHits().getFound());
userJsonString = JsonUtils.getMapper().writeValueAsString(readValue);
System.out.println(String.format("hit to jsonString:\n%s", userJsonString));
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void test2(){
String jsonString = "{\"hits\":{\"found\":1,\"start\":2,\"hit\":[{\"id\":\"1\",\"data\":{\"age\":20,\"name\":\"jack\",\"enName\":null,\"password\":null,\"gender\":\"\\u0000\",\"hasMarried\":false}}]}}";
try {
// 通过 new TypeReference>(){} 来解决泛型问题
Json readValue = JsonUtils.getMapper().readValue(jsonString, new TypeReference>(){});
System.out.println(readValue.getHits().getFound());
// 通过 TypeFactory 来解决泛型问题
JavaType jsonType = JsonUtils.getMapper().getTypeFactory().constructParametricType(Json.class, User.class);
readValue = JsonUtils.getMapper().readValue(jsonString, jsonType);
System.out.println(readValue.getHits().getFound());
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void test3(){
String jsonString = "{\"data\":{\"hits\":{\"found\":1,\"start\":2,\"hit\":[{\"id\":\"1\",\"data\":{\"age\":20,\"name\":\"jack\",\"enName\":null,\"password\":null,\"gender\":\"\\u0000\",\"hasMarried\":false}}]}},\"sign\":\"success\",\"code\":200,\"message\":null,\"dataSize\":1}";
try {
// 通过 new TypeReference>(){} 来解决泛型问题
HttpResponse> httpResponse = JsonUtils.getMapper().readValue(jsonString, new TypeReference>>(){});
System.out.println(httpResponse.getData().getHits().getFound());
// 通过 TypeFactory 来解决泛型问题
JavaType jsonType = JsonUtils.getMapper().getTypeFactory().constructParametricType(Json.class, User.class);
JavaType httpResponseJavaType = JsonUtils.getMapper().getTypeFactory().constructParametricType(HttpResponse.class, jsonType);
HttpResponse> parseHttpResponse = JsonUtils.getMapper().readValue(jsonString, httpResponseJavaType);
System.out.println(parseHttpResponse.getData().getHits().getFound());
} catch (Exception e) {
e.printStackTrace();
}
}