`
dreamoftch
  • 浏览: 498150 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Jackson入门学习

阅读更多

 

 

参考资料:

MkYong-Jackson参考

 

首先添加maven依赖(版本用最新的):

<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-mapper-asl</artifactId>
			<version>1.9.13</version>
</dependency>

 

然后是POJO对象:

package jackson.pojo;
import java.util.ArrayList;
import java.util.List;
 
public class User {
 
	private int age = 29;
	private String name = "mkyong";
	private List<String> messages = new ArrayList<String>() {
		
		private static final long serialVersionUID = 1L;

		{
			add("msg 1");
			add("msg 2");
			add("msg 3");
		}
	};

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public List<String> getMessages() {
		return messages;
	}

	public void setMessages(List<String> messages) {
		this.messages = messages;
	}
}

 

接下来,先测试JAVA对象-->JSON:

package jackson.tojson;

import jackson.pojo.User;

import java.io.File;

import org.codehaus.jackson.map.ObjectMapper;

public class JacksonExample {
	public static void main(String[] args) throws Exception {

		User user = new User();
		ObjectMapper mapper = new ObjectMapper();

		// convert user object to json string, and save to a file
		mapper.writeValue(new File("e:\\user.json"), user);

		// display to console
		System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(user));

	}

}

 

 

然后测试JSON->JAVA对象:

 

package jackson.fromjson;

import jackson.pojo.User;

import java.io.File;

import org.codehaus.jackson.map.ObjectMapper;

public class JacksonExample {
	public static void main(String[] args) throws Exception {

		ObjectMapper mapper = new ObjectMapper();

		// read from file, convert it to user class
		User user = mapper.readValue(new File("e:\\user.json"), User.class);

		// display to console
		System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(user));

	}

}

 

 JSON->Map:

 

package jackson.json2map;
import java.util.HashMap;
import java.util.Map;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
 
public class JsonMapExample {
    public static void main(String[] args) {
 
	String json = "{\"name\":\"mkyong\", \"age\":\"29\"}";
 
	Map<String,String> map = new HashMap<String,String>();
	ObjectMapper mapper = new ObjectMapper();
 
	try {
 
		//convert JSON string to Map
		map = mapper.readValue(json, 
		    new TypeReference<HashMap<String,String>>(){});
 
		System.out.println(map);
 
	} catch (Exception e) {
		e.printStackTrace();
	}
 
    }
}

 

 

Map->JSON:

 

package jackson.map2json;
import java.util.HashMap;
import java.util.Map;
 
import org.codehaus.jackson.map.ObjectMapper;
 
public class MapJsonExample {
    public static void main(String[] args) {
 
	try {
 
		ObjectMapper mapper = new ObjectMapper();
		String json = "";
 
		Map<String, String> map = new HashMap<String, String>();
		map.put("name", "mkyong");
		map.put("age", "29");
 
		//convert map to JSON string
		json = mapper.writeValueAsString(map);
 
		System.out.println(json);
 
	} catch (Exception e) {
		e.printStackTrace();
	}
 
    }
}

 

 

Map->JSON File:

 

package jackson.map2file;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.codehaus.jackson.map.ObjectMapper;
 
public class JsonMapFileExample {
    public static void main(String[] args) {
 
	ObjectMapper mapper = new ObjectMapper();
 
	Map<String, Object> map = new HashMap<String, Object>();
	map.put("name", "mkyong");
	map.put("age", 29);
 
	List<Object> list = new ArrayList<Object>();
	list.add("msg 1");
	list.add("msg 2");
	list.add("msg 3");
 
	map.put("messages", list);
 
	try {
 
		// write JSON to a file
		mapper.writeValue(new File("e:\\user.json"), map);
 
	} catch (Exception e) {
		e.printStackTrace();
	}
    }
}

 

 

JSON FILE->Map:

 

package jackson.file2map;
import java.io.File;
import java.util.ArrayList;
import java.util.Map;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
 
public class JsonFileMapExample {
    public static void main(String[] args) {
 
	try {
 
		ObjectMapper mapper = new ObjectMapper();
 
		// read JSON from a file
		Map<String, Object> map = mapper.readValue(
			new File("e:\\user.json"),
			new TypeReference<Map<String, Object>>() {
		});
 
		System.out.println(map.get("name"));
		System.out.println(map.get("age"));
 
		@SuppressWarnings("unchecked")
		ArrayList<String> list = (ArrayList<String>) map.get("messages");
 
		for (String msg : list) {
			System.out.println(msg);
		}
 
	} catch (Exception e) {
		e.printStackTrace();
	}
 
    }
}

 

 

用树的方式操作JSON:

 

package jackson.treemodel;
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("e:\\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("e:\\user.json"), rootNode);
 
		} catch (JsonGenerationException e) {
 
			e.printStackTrace();
 
		} catch (JsonMappingException e) {
 
			e.printStackTrace();
 
		} catch (IOException e) {
 
			e.printStackTrace();
 
		}
 
	}
 
}

 

 

用流的方式生成JSON:

 

package jackson.jsongenerator;

import java.io.File;
import java.io.IOException;
import org.codehaus.jackson.JsonEncoding;
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.map.JsonMappingException;

public class JacksonStreamExample {
	public static void main(String[] args) {

		try {

			JsonFactory jfactory = new JsonFactory();

			/*** write to file ***/
			JsonGenerator jGenerator = jfactory.createJsonGenerator(new File(
					"e:\\user.json"), JsonEncoding.UTF8);
			jGenerator.writeStartObject(); // {

			jGenerator.writeStringField("name", "mkyong"); // "name" : "mkyong"
			jGenerator.writeNumberField("age", 29); // "age" : 29

			jGenerator.writeFieldName("messages"); // "messages" :
			jGenerator.writeStartArray(); // [

			jGenerator.writeString("msg 1"); // "msg 1"
			jGenerator.writeString("msg 2"); // "msg 2"
			jGenerator.writeString("msg 3"); // "msg 3"

			jGenerator.writeEndArray(); // ]

			jGenerator.writeEndObject(); // }

			jGenerator.close();

		} catch (JsonGenerationException e) {

			e.printStackTrace();

		} catch (JsonMappingException e) {

			e.printStackTrace();

		} catch (IOException e) {

			e.printStackTrace();

		}

	}

}

 

 

用流的方式解析JSON:

 

package jackson.parsejson;
import java.io.File;
import java.io.IOException;
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.JsonToken;
import org.codehaus.jackson.map.JsonMappingException;
 
public class JacksonStreamExample {
   public static void main(String[] args) {
 
     try {
 
	JsonFactory jfactory = new JsonFactory();
 
	/*** read from file ***/
	JsonParser jParser = jfactory.createJsonParser(new File("e:\\user.json"));
 
	// loop until token equal to "}"
	while (jParser.nextToken() != JsonToken.END_OBJECT) {
 
		String fieldname = jParser.getCurrentName();
		if ("name".equals(fieldname)) {
 
		  // current token is "name",
                  // move to next, which is "name"'s value
		  jParser.nextToken();
		  System.out.println(jParser.getText()); // display mkyong
 
		}
 
		if ("age".equals(fieldname)) {
 
		  // current token is "age", 
                  // move to next, which is "name"'s value
		  jParser.nextToken();
		  System.out.println(jParser.getIntValue()); // display 29
 
		}
 
		if ("messages".equals(fieldname)) {
 
		  jParser.nextToken(); // current token is "[", move next
 
		  // messages is array, loop until token equal to "]"
		  while (jParser.nextToken() != JsonToken.END_ARRAY) {
 
                     // display msg1, msg2, msg3
		     System.out.println(jParser.getText()); 
 
		  }
 
		}
 
	  }
	  jParser.close();
 
     } catch (JsonGenerationException e) {
 
	  e.printStackTrace();
 
     } catch (JsonMappingException e) {
 
	  e.printStackTrace();
 
     } catch (IOException e) {
 
	  e.printStackTrace();
 
     }
 
  }
 
}

 

 

 

 

 

分享到:
评论

相关推荐

    jackson电动力学习题答案

    ### Jackson电动力学习题答案详解 #### 一、Jackson电动力学概述 《Classical Electrodynamics》(经典电动力学)第三版是由J.D. Jackson编写的经典教材,在学术界享有极高的声誉。该书内容详尽、研究深入且备受...

    JACKSON 经典电动力学习题解答

    ### JACKSON 经典电动力学习题解答知识点详解 #### 一、背景介绍 《JACKSON 经典电动力学习题解答》是一本在物理学领域内被广泛认可的经典教材的辅助资料。它包含了大量练习题及其解答,旨在帮助学生深入理解和掌握...

    jackson快速入门

    这篇“Jackson快速入门”将带你快速掌握Jackson的核心功能和使用方法。 首先,我们需要了解Jackson的基本组件。核心组件包括`Jackson-databind`,它提供了`ObjectMapper`类,用于实现对象到JSON和JSON到对象的转换...

    Jackson 2.9.3 和 jackson 2.9.3源码

    `jackson-core-2.9.3.jar`文件包含了Jackson库的基础组件,如JsonParser和JsonGenerator,它们分别用于读取和写入JSON数据。此外,还包含了一些关键类,如JsonNode,它是JSON树模型的根节点,用于构建和操作JSON结构...

    Jackson学习实例

    在本"Jackson学习实例"中,我们将深入探讨Jackson库的核心概念、主要功能以及如何在实际项目中应用。 一、Jackson简介 Jackson是由FasterXML团队开发的开源库,它的全名是com.fasterxml.jackson.databind,是Java...

    jackson 全部jar包

    10. **社区支持和文档**:Jackson有着活跃的社区和详尽的文档,开发者可以在遇到问题时获取帮助,同时学习如何充分利用这个库。 综上所述,Jackson 2.6版本包含了全面的JSON处理功能,从基础的流式API到高级的数据...

    Jackson实例入门

    在本篇文章中,我们将通过实例来入门Jackson的使用。 一、Jackson库简介 Jackson库的核心组件包括: 1. `Jackson-databind`:提供将Java对象映射到JSON和从JSON反序列化回Java对象的功能。 2. `Jackson-core`:基础...

    JACKSON经典电动力学.rar

    美国物理学家John David Jackson所著的《JACKSON经典电动力学》第三版,作为电磁学领域一部具有里程碑意义的教材,不仅是研究生和高级本科生学习电磁理论的重要参考书,更是一本引无数学子踏入电磁学殿堂的宝典。...

    jackson经典电动力学部分习题答案

    该书在某些地方假设了读者对基础材料的熟悉度,省略了关键步骤,并且提供的实例不足。对于初学者而言,这可能是一本难以消化的书籍。然而,Jackson的野心在于他几乎涵盖了经典电磁理论的大部分内容,除了一些明显的...

    jackson-core-asl-1.9.8.jar

    总之,Jackson库是Java开发中处理JSON不可或缺的工具,`jackson-core-asl`和`jackson-mapper-asl`这两个组件共同构成了JSON操作的基础。虽然提供的版本较旧,但它们展示了JSON处理的基本原理和方法,对于理解和学习...

    jackson电动力学答案

    首先,标题"Jackson电动力学答案"和描述"Jackson电动力学所有解题答案,帮助大家更好理解电动...同时,也提醒读者在学习过程中需要有耐心和系统性的学习方法,从基础的概念入手,逐步深入到更复杂的理论和实践问题中。

    Jackson资源jar包+api

    这是Jackson的基础模块,其他模块都依赖于它。 3. **Jackson-annotations**:包含了一组注解,用于配置对象到JSON的映射规则,如`@JsonProperty`、`@JsonInclude`等,使得无需编写大量的代码就能实现复杂的序列化和...

    jackson经典电动力学(上,下册)

    总之,《Jackson经典电动力学》是学习和研究电动力学领域必读之作,它不仅提供了电磁学的深入理解,而且揭示了物理理论与现实世界之间美妙而复杂的联系。对于致力于物理学研究的专业人士和学生而言,这本书是宝贵的...

    jackson的经典电动力学

    Jackson撰写,自出版以来一直被广泛用作电动力学课程的基础教材。郭硕鸿教授的电动力学教材虽然同样受到好评,但杰克逊的版本以其深入浅出、严谨精确的论述闻名,深受学者和学生喜爱。 电动力学是物理学的一个重要...

    使用Jackson在Java中处理JSON

    1. **Jackson-core**: 这是Jackson库的基础模块,包含了基本的JSON流处理API,如`JsonParser`和`JsonGenerator`,它们分别用于读取和写入JSON数据。 2. **Jackson-databind**: 这个模块提供了更高级别的数据绑定...

    JAVA-jackson.zip

    在这个名为"JAVA-jackson.zip"的压缩包中,包含了学习Jackson和JSON解析所需的资源。 首先,我们要了解Jackson库的核心组件。主要有三个: 1. **Jackson-databind**:这是Jackson的核心模块,提供了将Java对象转换...

    jackson2.x主要jar包

    2. **jackson-core-2.8.5.jar**:这是Jackson的基础模块,包含JSON解析和生成的基本API。例如`JsonParser`和`JsonGenerator`类,分别用于解析JSON输入流和生成JSON输出流。此外,它还提供了一些基本类型转换工具,如...

    jackson-core-2.7.9源码

    通过对`jackson-core-2.7.9`源码的分析,开发者可以了解JSON处理的底层细节,学习如何利用Jackson实现高效的数据转换,以及如何通过定制和扩展Jackson满足特定的应用场景需求。这对于深入理解和优化JSON处理流程,...

    JAVA及Jackson反序列化漏洞.docx

    为了实现反序列化,Java对象必须实现`java.io.Serializable`接口,这是Java序列化机制的基础。 【Jackson反序列化原理】 Jackson库是Java中广泛使用的JSON处理库,它提供了高效的序列化和反序列化功能。Jackson的...

    最新的高性能 JSON 处理jackson-2.8.9.jar下载

    2. **jackson-core-2.8.9.jar**:这是Jackson的基础模块,包含了解析和生成JSON的基本功能。它提供了流式API,允许开发者逐个处理JSON令牌,从而实现高效的JSON处理。此外,还包含了一些基本的JSON类型,如`...

Global site tag (gtag.js) - Google Analytics