java Jackson 库操作 json 的基本演示
来源:互联网 发布:2017最火的网络词 编辑:程序博客网 时间:2024/06/05 00:47
核心库下载地址
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)); // 得到的输出信息 // {"child":{"nodekey1":1,"nodekey2":2},"arraynode":[{"nodekey1":1,"nodekey2":2},1]} } catch (Exception e) { } }
// 创建一个 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);
将 java object 转化为 json string,被转换的对象类似 YourObject 这样,利用 ObjectWrite 进行转换。
public YourObject
{
private str = "";
public void setStr(String str)
{
this.str = str;
}
public String getStr()
{
return str;
}
}
// 将 java 对象 转换为 json string ObjectWriter objectWriter = new ObjectMapper().writer().withDefaultPrettyPrinter(); String json = null; try { json = objectWriter.writeValueAsString(yourObject); } catch (JsonProcessingException e) { e.printStackTrace(); }
参考资料
https://github.com/FasterXML/jackson
blog.csdn.net/joyous/article/details/9448461
Q群讨论:236201801
- java Jackson 库操作 json 的基本演示
- java Jackson 库操作 json 的基本演示
- java Jackson 库操作 json 的基本演示
- java Jackson 库操作 json 的基本演示
- java Jackson 库操作 json 的基本演示
- java Jackson 库操作 json 的基本演示
- java Jackson 库操作 json 的基本演示
- java Jackson 库操作 json 的基本演示
- Java中Jackson库操作json的基本操作
- jackson的基本操作
- Jackson的json转换和Jackson Annotations 基本用法
- Java使用jackson操作Json格式数据
- java 操作json数据 fastjson jackson
- Jackson实现的json操作工具类
- Json学习(二):java和Jackson操作Json
- Jackson实现json与java的转化
- JackSon转换Java的Json使用方法
- Java JSON处理类库Jackson
- B. Road Construction
- uva 11082(网络流)
- UVA 465 - Overflow(大数)
- Centos6.0 64位jdk tomcat MySQL 5.6.11 CMake安装部署
- 合并两个vector
- java Jackson 库操作 json 的基本演示
- 文件系统挂载(解挂)
- gdbserver 移植
- 随身wifi精灵比之360随身wif。。。
- iOS-二维码扫描
- 2013年7月24日
- MySQL 用数字辅助表实现复杂的列变行
- Java的垃圾回收器GC机制
- u-boot Makefile分析