初识jackson
来源:互联网 发布:手机屏幕分享软件 编辑:程序博客网 时间:2024/05/22 00:35
今天刚刚接触jackson,刚刚开始不知道是什么,看完后才发觉是个好东西。现在Android通信大部分都是用JSON来与服务器通信。jackson是一种可以让你很方便的将Java对象转换成JSON的jar包。
JsonGenerator对象。想要构造它需要使用ObjectMapper。
jsonGenerator = objectMapper.getJsonFactory().createJsonGenerator(System.out, JsonEncoding.UTF8);
用ObjectMapper获得JsonFactory()然后创建JsonGenerator需要两个参数,第一个参数是一个输出流,用于输出转换过后的内容,也可以接受一个File,用来将转换的结果直接写到文档中。第二个参数是编码格式。
对于ObjectMapper对象可以直接进行默认的初始化。
package json.change;import java.io.IOException;import java.io.StringWriter;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import java.util.Set;import javax.print.attribute.HashAttributeSet;import org.codehaus.jackson.JsonEncoding;import org.codehaus.jackson.JsonGenerationException;import org.codehaus.jackson.JsonGenerator;import org.codehaus.jackson.JsonParseException;import org.codehaus.jackson.JsonProcessingException;import org.codehaus.jackson.map.JsonMappingException;import org.codehaus.jackson.map.ObjectMapper;import org.codehaus.jackson.node.JsonNodeFactory;import org.codehaus.jackson.xml.XmlMapper;import org.junit.After;import org.junit.Before;import org.junit.Test;public class JackJsonTest {/** * 创建JsonGenerator对象,用于将java对象转化为JSON */private JsonGenerator jsonGenerator = null;/** * 1.用于创建JsonGenerator * 2.可以用于转化json */private ObjectMapper objectMapper;private AccountBean accountBean;@Beforepublic void init(){objectMapper = new ObjectMapper();accountBean = new AccountBean();accountBean.setId(1);accountBean.setAdress("1234");accountBean.setEmail("@qq.com");accountBean.setName("tang");try {jsonGenerator = objectMapper.getJsonFactory().createJsonGenerator(System.out, JsonEncoding.UTF8);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Afterpublic void destroy() throws IOException{if(jsonGenerator != null){jsonGenerator.flush();}if(!(jsonGenerator.isClosed())){jsonGenerator.close();}jsonGenerator = null;objectMapper = null;accountBean = null;System.gc();}@Testpublic void write(){try {jsonGenerator.writeObject(accountBean);} catch (JsonProcessingException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println();System.out.println("ObjectMapper");try {objectMapper.writeValue(System.out, accountBean);} catch (JsonGenerationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (JsonMappingException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Testpublic void writeMap() throws JsonProcessingException, IOException{Map<String, Object> map = new HashMap<String, Object>();map.put("name", accountBean.getName());map.put("account", accountBean);accountBean = new AccountBean();accountBean.setAdress("123");accountBean.setEmail("615853302@qq.com");map.put("account2", accountBean);jsonGenerator.writeObject(map);System.out.println();objectMapper.writeValue(System.out, map);}@Testpublic void writeList() throws JsonProcessingException, IOException{ArrayList<AccountBean> list = new ArrayList<>();list.add(accountBean);accountBean = new AccountBean();accountBean.setAdress("home");accountBean.setEmail("615853302@qq.com");accountBean.setId(2);accountBean.setName("tang");list.add(accountBean);System.out.println("jsonGenerator");jsonGenerator.writeObject(list);System.out.println();System.out.println("objectMapper");System.out.println("1#" + objectMapper.writeValueAsString(list));System.out.println();System.out.print("2#");objectMapper.writeValue(System.out, list);}@Testpublic void writeOtherJson() throws JsonGenerationException, IOException{ String[] arr = { "a", "b", "c" }; System.out.println("jsonGenerator"); String str = "hello world jackson!"; jsonGenerator.writeBinary(str.getBytes()); jsonGenerator.writeBoolean(true); jsonGenerator.writeNull(); jsonGenerator.writeNumber(2.2f); jsonGenerator.writeRaw("c"); jsonGenerator.writeRaw(str, 5, 10); jsonGenerator.writeRawValue(str, 5, 5); jsonGenerator.writeString(str); jsonGenerator.writeTree(JsonNodeFactory.instance.POJONode(str)); System.out.println(); jsonGenerator.writeStartObject();//{ jsonGenerator.writeObjectFieldStart("user");//user:{ jsonGenerator.writeStringField("name", "jackson");//name:jackson jsonGenerator.writeBooleanField("sex", true);//sex:true jsonGenerator.writeNumberField("age", 22);//age:22 jsonGenerator.writeEndObject();//} jsonGenerator.writeArrayFieldStart("infos");//infos:[ jsonGenerator.writeNumber(22);//22 jsonGenerator.writeString("this is array");//this is array jsonGenerator.writeEndArray();//] jsonGenerator.writeEndObject();//} AccountBean bean = new AccountBean(); bean.setAdress("address"); bean.setEmail("email"); bean.setId(1); bean.setName("haha"); //complex Object jsonGenerator.writeStartObject();//{ jsonGenerator.writeObjectField("user", bean);//user:{bean} jsonGenerator.writeObjectField("infos", arr);//infos:[array] jsonGenerator.writeEndObject();}/** * JSON装换为java对象 */@Testpublic void readJson2Entity() { String json = "{\"address\":\"address\",\"name\":\"haha\",\"id\":1,\"email\":\"email\"}"; try { AccountBean acc = objectMapper.readValue(json, AccountBean.class); System.out.println(acc.getName()); System.out.println(acc); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }}/** * JSON转换为list对象 * objectMapper.readValue(json, List.class) * 无法知道具体的类型所以不能转换成AccountBean类型 */@Testpublic void readJson2List() { String json = "[{\"address\": \"address2\",\"name\":\"haha2\",\"id\":2,\"email\":\"email2\"},"+ "{\"address\":\"address\",\"name\":\"haha\",\"id\":1,\"email\":\"email\"}]"; try { List<LinkedHashMap<String, Object>> list = objectMapper.readValue(json, List.class); System.out.println(list.size()); for (int i = 0; i < list.size(); i++) { Map<String, Object> map = list.get(i); Set<String> set = map.keySet(); for (Iterator<String> it = set.iterator();it.hasNext();) { String key = it.next(); System.out.println(key + ":" + map.get(key)); } } } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }}/** * JSON转换为具体的类型数组 */@Testpublic void readJson2Array() { String json = "[{\"address\": \"address2\",\"name\":\"haha2\",\"id\":2,\"email\":\"email2\"},"+ "{\"address\":\"address\",\"name\":\"haha\",\"id\":1,\"email\":\"email\"}]"; try { AccountBean[] arr = objectMapper.readValue(json, AccountBean[].class); System.out.println(arr.length); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }}/** * JSON转换为Map */@Testpublic void readJson2Map() { String json = "{\"success\":true,\"A\":{\"address\": \"address2\",\"name\":\"haha2\",\"id\":2,\"email\":\"email2\"},"+ "\"B\":{\"address\":\"address\",\"name\":\"haha\",\"id\":1,\"email\":\"email\"}}"; try { Map<String, Map<String, Object>> maps = objectMapper.readValue(json, Map.class); System.out.println(maps.size()); Set<String> key = maps.keySet(); Iterator<String> iter = key.iterator(); while (iter.hasNext()) { String field = iter.next(); System.out.println(field + ":" + maps.get(field)); } } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }}/** * 转换XML */@Testpublic void writeObject2Xml() { //stax2-api-3.0.2.jar System.out.println("XmlMapper"); XmlMapper xml = new XmlMapper(); try { //javaBean转换成xml //xml.writeValue(System.out, bean); StringWriter sw = new StringWriter(); xml.writeValue(sw, accountBean); System.out.println(sw.toString()); //List转换成xml List<AccountBean> list = new ArrayList<AccountBean>(); list.add(accountBean); list.add(accountBean); System.out.println(xml.writeValueAsString(list)); //Map转换xml文档 Map<String, AccountBean> map = new HashMap<String, AccountBean>(); map.put("A", accountBean); map.put("B", accountBean); System.out.println(xml.writeValueAsString(map)); } catch (JsonGenerationException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }}}
0 0
- 初识jackson
- 初识Jackson(实践)
- JackSon
- jackson
- Jackson
- jackson
- jackson
- jackson
- jackson
- jackson
- jackson
- Jackson
- Jackson
- Jackson
- Jackson
- Jackson
- jackson
- jackson
- linux下文件操作API:write/read/fcntl/ioctl/mmap
- 可下拉的PinnedHeaderExpandableListView的实现
- 更改、删除字段名、在某字段后增加字段
- Unicode和汉字互相转码
- 二分查找上界和下界
- 初识jackson
- iOS-让结构体类型frame的属性可以直接修改
- 正则表达式基础语法
- 安全测试之SQL注入攻击
- C++中的_access函数
- 1/26 cookie学习纪录片
- 1015. 德才论 (25)
- ios扫一扫功能实现
- C++栈和队列