java Jackson 库操作 json 的基本演示
2016-03-04 11:26
543 查看
核心库下载地址
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;
[java]
view plain
copy
/**
* 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)
{
}
}
[java]
view plain
copy
/**
* 解析 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)
{
}
}
[java]
view plain
copy
/**
* 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)
{
}
}
[java]
view plain
copy
/**
* 创建一个 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));
// 得到的输出信息
// {"child":{"nodekey1":1,"nodekey2":2},"arraynode":[{"nodekey1":1,"nodekey2":2},1]}
}
catch (Exception e)
{
}
}
[java]
view plain
copy
// 创建一个 array node
public static void MyTest07()
{
try
{
ObjectMapper mapper = new ObjectMapper();
ArrayNode arrayNode = mapper.createArrayNode();
int i = 0;
// 在 array 内创建 3 组 node 存入 array
for (i = 0; i < 3; i++)
{
// 创建一个 node
ObjectNode node = mapper.createObjectNode();
node.put("nodeA", i);
node.put("nodeB", i);
node.put("nodeC", i);
// 向 array 内添 node
arrayNode.add(node);
}
// 根
ObjectNode root = mapper.createObjectNode();
root.put("total", i);
root.put("rows", arrayNode);
System.out.println(mapper.writeValueAsString(root));
// 得到的输出信息
// {"total":3,"rows":[{"nodeA":0,"nodeB":0,"nodeC":0},{"nodeA":1,"nodeB":1,"nodeC":1},{"nodeA":2,"nodeB":2,"nodeC":2}]}
}
catch (Exception e)
{
e.printStackTrace();
}
}
在添加 array 节点时,put node 的方法已经过时,将使用 set 方法 添加 array 节点,举例:
root.set ("rows", arrayNode);
参考资料
https://github.com/FasterXML/jackson
blog.csdn.net/joyous/article/details/9448461
Q群讨论:236201801
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;
[java]
view plain
copy
/**
* 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)
{
}
}
[java]
view plain
copy
/**
* 解析 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)
{
}
}
[java]
view plain
copy
/**
* 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)
{
}
}
[java]
view plain
copy
/**
* 创建一个 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));
// 得到的输出信息
// {"child":{"nodekey1":1,"nodekey2":2},"arraynode":[{"nodekey1":1,"nodekey2":2},1]}
}
catch (Exception e)
{
}
}
[java]
view plain
copy
// 创建一个 array node
public static void MyTest07()
{
try
{
ObjectMapper mapper = new ObjectMapper();
ArrayNode arrayNode = mapper.createArrayNode();
int i = 0;
// 在 array 内创建 3 组 node 存入 array
for (i = 0; i < 3; i++)
{
// 创建一个 node
ObjectNode node = mapper.createObjectNode();
node.put("nodeA", i);
node.put("nodeB", i);
node.put("nodeC", i);
// 向 array 内添 node
arrayNode.add(node);
}
// 根
ObjectNode root = mapper.createObjectNode();
root.put("total", i);
root.put("rows", arrayNode);
System.out.println(mapper.writeValueAsString(root));
// 得到的输出信息
// {"total":3,"rows":[{"nodeA":0,"nodeB":0,"nodeC":0},{"nodeA":1,"nodeB":1,"nodeC":1},{"nodeA":2,"nodeB":2,"nodeC":2}]}
}
catch (Exception e)
{
e.printStackTrace();
}
}
在添加 array 节点时,put node 的方法已经过时,将使用 set 方法 添加 array 节点,举例:
root.set ("rows", arrayNode);
参考资料
https://github.com/FasterXML/jackson
blog.csdn.net/joyous/article/details/9448461
Q群讨论:236201801
相关文章推荐
- 【leetcode】【110】Balanced Binary Tree
- java反射机制笔记
- java聊天源码 java后台框架源码 websocket源码 IM
- 出现java heap space的问题(内存溢出)
- Myeclipse如何自动创建hibernate
- Web应用web.xml的Struts2的配置
- 【leetcode】【108】Convert Sorted Array to Binary Search Tree
- Java 虚拟机体系结构
- 国际化: 理解Java平台下的Locale
- Java适配器设计模式
- java如何对map进行排序详解(map集合的使用)
- Java中列出目录中所有文件路径
- win7安装Genymotion 和 virtualBox eclipse插 使用离线ova 附下载
- Struts2标签库整理【完整】
- Struts2 面试题分析
- 【leetcode】【107】Binary Tree Level Order Traversal II
- spring定时器
- eclipse修改内存大小
- eclipse 快捷键记载
- 【leetcode】【106】Construct Binary Tree from Inorder and Postorder Traversal