在工作中,经常要对json格式的字符串做处理
比如resttemplate返回的数据,一般是json格式的string字符串。这个适合要将他转为我们所需要的类型
例如:
1.转换为map
org.codehaus.jackson.map.ObjectMapper
@Autowired
ObjectMapper objectMapper;
String resultStr = restTemplate.postForObject(url, linkedMap, String.class);
Map<String, Object> ixinRetMap = objectMapper.readValue(resultStr, Map.class);
ObjectMapper mapper = new ObjectMapper();
String jsonString = "{\"name\":\"Mahesh\", \"age\":21}";
//json字符串转对象
Student student = mapper.readValue(jsonString, Student.class);
System.out.println(student);
//对象转json字符串
jsonString = mapper.writeValueAsString(student);
System.out.println(jsonString);
//json字符串转为Map对象
Map map=mapper.readValue(jsonString, Map.class);
System.out.println(map);
//@Test//树遍历
public void test4(){
try {
ObjectMapper mapper = new ObjectMapper();
String jsonString = "{\"name\":\"Mahesh Kumar\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}";
JsonNode rootNode = mapper.readTree(jsonString);
JsonNode nameNode = rootNode.path("name");
System.out.println("Name: "+ nameNode.getTextValue());
JsonNode ageNode = rootNode.path("age");
System.out.println("Age: " + ageNode.getIntValue());
JsonNode verifiedNode = rootNode.path("verified");
System.out.println("Verified: " + (verifiedNode.getBooleanValue() ? "Yes":"No"));
JsonNode marksNode = rootNode.path("marks");
Iterator<JsonNode> iterator = marksNode.getElements();
System.out.print("Marks: [ ");
while (iterator.hasNext()) {
JsonNode marks = iterator.next();
System.out.print(marks.getIntValue() + " ");
}
System.out.println("]");
} catch (Exception e) {
e.printStackTrace();
}
}