java Jackson 库操作 json 的基本演示 - joyous的专栏 - 博客频道 - CSDN.NET
核心库下载地址
http://repo1.maven.org/maven2/com/fasterxml/jackson/core/
jackson-annotations-2.2.2.jar
jackson-core-2.2.2.jar
jackson-databind-2.2.2.jar
文件类型支持模块
http://repo1.maven.org/maven2/com/fasterxml/jackson/dataformat/
jackson-dataformat-xml-2.2.2.jar
导入库
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonEncoding;
import com.fasterxml.jackson.core.JsonParseException;
- /**
- * Map 转换为 json
- */
- public static void MyTest01()
- {
- Map<String, String> hashMap = new HashMap<String, String>();
- hashMap.put("name", "zhang");
- hashMap.put("sex", "1");
- hashMap.put("login", "Jack");
- hashMap.put("password", "123abc");
- try
- {
- ObjectMapper objectMapper = new ObjectMapper();
- String userMapJson = objectMapper.writeValueAsString(hashMap);
- JsonNode node = objectMapper.readTree(userMapJson);
- // 输出结果转意,输出正确的信息
- System.out.println(node.get("password").asText());
- // 输出不转意,输出结果会包含"",这是不正确的,除非作为json传递,如果是输出结果值,必须如上一行的操作
- System.out.println(node.get("name"));
- }
- catch (IOException e)
- {
- }
- }
- /**
- * 解析 json 格式字符串
- */
- public static void MyTest03()
- {
- try
- {
- String str = "{\"data\":{\"birth_day\":7,\"birth_month\":6},\"errcode\":0,\"msg\":\"ok\",\"ret\":0}";
- ObjectMapper mapper = new ObjectMapper();
- JsonNode root = mapper.readTree(str);
- JsonNode data = root.path("data");
- JsonNode birth_day = data.path("birth_day");
- System.out.println(birth_day.asInt());
- JsonNode birth_month = data.path("birth_month");
- System.out.println(birth_month.asInt());
- JsonNode msg = root.path("msg");
- System.out.println(msg.textValue());
- }
- catch (IOException e)
- {
- }
- }
- /**
- * json 直接提取 值
- */
- public static void MyTest05()
- {
- try
- {
- // 演示字符串
- String str = "{\"data\":{\"hasnext\":0,\"info\":[{\"id\":\"288206077664983\",\"timestamp\":1371052476},{\"id\":\"186983078111768\",\"timestamp\":1370944068},{\"id\":\"297031120529307\",\"timestamp\":1370751789},{\"id\":\"273831022294863\",\"timestamp\":1369994812}],\"timestamp\":1374562897,\"totalnum\":422},\"errcode\":0,\"msg\":\"ok\",\"ret\":0,\"seqid\":5903702688915195270}";
- ObjectMapper mapper = new ObjectMapper();
- JsonNode root = mapper.readTree(str);
- // 提取 data
- JsonNode data = root.path("data");
- // 提取 info
- JsonNode info = data.path("info");
- System.out.println(info.size());
- // 得到 info 的第 0 个
- JsonNode item = info.get(0);
- System.out.println(item.get("id"));
- System.out.println(item.get("timestamp"));
- // 得到 info 的第 2 个
- item = info.get(2);
- System.out.println(item.get("id"));
- System.out.println(item.get("timestamp"));
- // 遍历 info 内的 array
- if (info.isArray())
- {
- for (JsonNode objNode : info)
- {
- System.out.println(objNode);
- }
- }
- }
- catch (Exception e)
- {
- }
- }
- /**
- * 创建一个 json,并向该 json 添加内容
- */
- public static void MyTest07()
- {
- try
- {
- ObjectMapper mapper = new ObjectMapper();
- ObjectNode root1 = mapper.createObjectNode();
- root1.put("nodekey1", 1);
- root1.put("nodekey2", 2);
- System.out.println(root1.toString());
- //Create the root node
- ObjectNode root = mapper.createObjectNode ();
- //Create a child node
- ObjectNode node1 = mapper.createObjectNode ();
- node1.put ("nodekey1", 1);
- node1.put ("nodekey2", 2);
- //Bind the child nodes
- root.put ("child", node1);
- //Array of nodes
- ArrayNode arrayNode = mapper.createArrayNode ();
- arrayNode.add (node1);
- arrayNode.add (1);
- //Bind array node
- root.put ("arraynode", arrayNode);
- System.out.println (mapper.writeValueAsString (root));
- }
- catch (Exception e)
- {
- }
- }
参考资料