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"
}
下面一个完整的的例子演示了读取和修改结点
Java代码 复制代码 收藏代码
  1. import java.io.BufferedReader; 
  2. import java.io.File; 
  3. import java.io.FileReader; 
  4. import java.io.IOException; 
  5. import java.util.Iterator; 
  6.   
  7. import org.codehaus.jackson.JsonGenerationException; 
  8. import org.codehaus.jackson.JsonNode; 
  9. import org.codehaus.jackson.map.JsonMappingException;
  10. import org.codehaus.jackson.map.ObjectMapper; 
  11. import org.codehaus.jackson.node.ObjectNode; 
  12.   
  13. public class JacksonTreeNodeExample { 
  14.     public static void main(String[] args) { 
  15.   
  16.         ObjectMapper mapper = new ObjectMapper(); 
  17.   
  18.         try
  19.   
  20.             BufferedReader fileReader = new BufferedReader( 
  21.                 new FileReader("c:\\user.json")); 
  22.             JsonNode rootNode = mapper.readTree(fileReader); 
  23.   
  24.             /*** read ***/ 
  25.             JsonNode nameNode = rootNode.path("name"); 
  26.             System.out.println(nameNode.getTextValue()); 
  27.   
  28.             JsonNode ageNode = rootNode.path("age"); 
  29.             System.out.println(ageNode.getIntValue()); 
  30.   
  31.             JsonNode msgNode = rootNode.path("messages"); 
  32.             Iterator<JsonNode> ite = msgNode.getElements(); 
  33.   
  34.             while (ite.hasNext()) { 
  35.                 JsonNode temp = ite.next(); 
  36.                 System.out.println(temp.getTextValue()); 
  37.   
  38.             } 
  39.   
  40.             /*** update ***/ 
  41.             ((ObjectNode)rootNode).put("nickname", "new nickname"); 
  42.             ((ObjectNode)rootNode).put("name", "updated name"); 
  43.             ((ObjectNode)rootNode).remove("age"); 
  44.   
  45.             mapper.writeValue(new File("c:\\user.json"), rootNode); 
  46.   
  47.         } catch (JsonGenerationException e) { 
  48.   
  49.             e.printStackTrace(); 
  50.   
  51.         } catch (JsonMappingException e) { 
  52.   
  53.             e.printStackTrace(); 
  54.   
  55.         } catch (IOException e) { 
  56.   
  57.             e.printStackTrace(); 
  58.   
  59.         } 
  60.   
  61.     } 
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"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值