`
dreamoftch
  • 浏览: 486128 次
  • 性别: 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();
 
     }
 
  }
 
}

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics