`

jackson中的tree model例子

阅读更多
今天继续jackson的学习,在JACKSON中,可以用TREE MODEL树型结构,象以DOM
的方式那样去读取结点,方法为:
  ObjectMapper mapper = new ObjectMapper();


BufferedReader fileReader = new BufferedReader(
new FileReader("c:\\user.json"));
JsonNode rootNode = mapper.readTree(fileReader);
JsonNode nameNode = rootNode.path("name");
System.out.println(nameNode.getTextValue());

比如一个user.json如下:
  {
  "age" : 29,
  "messages" : [ "msg 1", "msg 2", "msg 3" ],
  "name" : "mkyong"
}
下面一个完整的的例子演示了读取和修改结点
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
 
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.node.ObjectNode;
 
public class JacksonTreeNodeExample {
	public static void main(String[] args) {
 
		ObjectMapper mapper = new ObjectMapper();
 
		try {
 
			BufferedReader fileReader = new BufferedReader(
				new FileReader("c:\\user.json"));
			JsonNode rootNode = mapper.readTree(fileReader);
 
			/*** read ***/
			JsonNode nameNode = rootNode.path("name");
			System.out.println(nameNode.getTextValue());
 
			JsonNode ageNode = rootNode.path("age");
			System.out.println(ageNode.getIntValue());
 
			JsonNode msgNode = rootNode.path("messages");
			Iterator<JsonNode> ite = msgNode.getElements();
 
			while (ite.hasNext()) {
				JsonNode temp = ite.next();
				System.out.println(temp.getTextValue());
 
			}
 
			/*** update ***/
			((ObjectNode)rootNode).put("nickname", "new nickname");
			((ObjectNode)rootNode).put("name", "updated name");
			((ObjectNode)rootNode).remove("age");
 
			mapper.writeValue(new File("c:\\user.json"), rootNode);
 
		} catch (JsonGenerationException e) {
 
			e.printStackTrace();
 
		} catch (JsonMappingException e) {
 
			e.printStackTrace();
 
		} catch (IOException e) {
 
			e.printStackTrace();
 
		}
 
	}



输出:
mkyong
29
msg 1
msg 2
msg 3

并且这里修改了节点内容,重新写了新的JSON,所以新的JSON文件为:
{
  "messages" : [ "msg 1", "msg 2", "msg 3" ],
  "name" : "updated name",
  "nickname" : "new nickname"
}
4
2
分享到:
评论

相关推荐

    spreadboot之Jackson配置与使用例子.docx

    springboot默认配置json转换工具jackson, 介绍配置的方法,例子,运行结果及所遇问题

    jackson-jar

    2) Tree Model 通过基于内存的树形结构来描述json数据,和 XML DOM类似。通过org.codehaus.jackson.map.ObjectMapper构建树,树由JsonNode节点组成。 3) Data Binding 基于属性访问或注解的方式将json和POJO...

    com.fasterxml.jackson

    使用Tree Model,通过JsonNode处理单个Json节点 使用databind模块,直接对Java对象进行序列化和反序列化 通常来说,我们在日常开发中使用的是第3种方式,有时为了简便也会使用第2种方式,比如你要从一个很大的Json...

    jackson 1.5中文帮助文档

    jackson 1.5中文帮助文档,解析json最好的工具,最快、最方便。希望对大家有用!

    jackson-core-2.11.4-API文档-中文版.zip

    赠送jar包:jackson-core-2.11.4.jar; 赠送原API文档:jackson-core-2.11.4-javadoc.jar; 赠送源代码:jackson-core-2.11.4-sources....人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jackson-annotations-2.13.1-API文档-中文版.zip

    赠送jar包:jackson-annotations-2.13.1.jar; 赠送原API文档:jackson-annotations-2.13.1-javadoc.jar; 赠送源代码:jackson-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jackson-databind-2.13.1-API文档-中文版.zip

    赠送jar包:jackson-databind-2.13.1.jar; 赠送原API文档:jackson-databind-2.13.1-javadoc.jar; 赠送源代码:jackson-databind-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    Jackson 入门Jackson 入门

    Jackson 入门 Jackson 入门 Jackson 入门

    jackson-databind jackson-annatation jackson-core jackson-mapper

    jackson-databind jackson-annatation jackson-core jackson-mapper

    jackson-core-2.10.2-API文档-中文版.zip

    赠送jar包:jackson-core-2.10.2.jar; 赠送原API文档:jackson-core-2.10.2-javadoc.jar; 赠送源代码:jackson-core-2.10.2-sources....人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jackson 完整Jar包

    jackson-databind需要引用另外两个包,所以如果项目中需要jackson-databind,则只需要加入它的dependency就行了,其他两个会自动引入: &lt;dependency&gt; &lt;groupId&gt;com.fasterxml.jackson.

    jackson-annotations.jar jackson-core.jar jackson-databind.jar

    jackson-annotations.jar jackson-core.jar jackson-databind.jar

    jackson-databind-2.9.10.8.jar升级相关jar包

    jackson-databind-2.9.10.8.jar升级相关jar包包含: jackson-module-jaxb-annotations-2.9.10.jar jackson-core-2.9.10.jar jackson-databind-2.9.10.8.jar jackson-annotations-2.9.10.jar jackson-jaxrs-json-...

    jackson-databind-2.12.5-API文档-中文版.zip

    赠送jar包:jackson-databind-2.12.5.jar; 赠送原API文档:jackson-databind-2.12.5-javadoc.jar; 赠送源代码:jackson-databind-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jackson-annotations-2.11.4-API文档-中文版.zip

    赠送jar包:jackson-annotations-2.11.4.jar; 赠送原API文档:jackson-annotations-2.11.4-javadoc.jar; 赠送源代码:jackson-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    jackson-2.7.0版架包

    jackson-2.7.0版架包jackson-2.7.0版架包jackson-2.7.0版架包jackson-2.7.0版架包jackson-2.7.0版架包jackson-2.7.0版架包jackson-2.7.0版架包jackson-2.7.0版架包jackson-2.7.0版架包jackson-2.7.0版架包jackson-...

    jackson-core-2.13.1-API文档-中英对照版.zip

    赠送jar包:jackson-core-2.13.1.jar; 赠送原API文档:jackson-core-2.13.1-javadoc.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    Jackson 经典电动力学

    Jackson J.D.的经典电动力学, Classical electrodynamics (3ed., Wiley, 1999),很清楚

    jackson-annotations、jackson-core、jackson-databind

    jackson2.9 搭配spring4使用,如果版本不符合,会出现“http请求415错误Unsupported Media Type”错误

    jackson-annotations-2.12.5-API文档-中文版.zip

    赠送jar包:jackson-annotations-2.12.5.jar; 赠送原API文档:jackson-annotations-2.12.5-javadoc.jar; 赠送源代码:jackson-...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

Global site tag (gtag.js) - Google Analytics