Java中json object相互转化的那些事儿

Java已有的处理json格式的库很多,包括json-lib,Jackson, Gson, fastjson等,每个库都自成一派。
这两天碰到了一个需要把一个JsonNode里面一个键对应的值改掉的问题,这个值原本是个字符串,需要改成json数组。由于工程里面已经引入了jackson, 所以选择用jackson lib实现。记录一下修改过程:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;

ObjectMapper objectMapper = new ObjectMapper();
//从HTTP response中取到json格式的response body
JsonNode rootNode = objectMapper.readTree(response.getBody());
String finalText = rootNode.get("outputText").toString();
//把原始字符串作为一项,放进新建的list
List finalTextList = new ArrayList();
finalTextList.add(finalText);
//将list转成json arraynode
ArrayNode finalTextArray = objectMapper.valueToTree(finalTextList);
ObjectNode objectNode = (ObjectNode) rootNode;
//用新建的arraynode, 重新把键值对添加一遍
objectNode.putArray("outputText").addAll(finalTextArray);

你可能感兴趣的:(Java中json object相互转化的那些事儿)