Json学习(二):java和Jackson操作Json
2014-11-14 07:40
357 查看
另:Jackson解析json的文章与示例:Jackson实现json与java的转化
一、java api 操作Json
1、需要引进json的jar包,如:json-lib-2.3-jdk15.jar,还有很多这个jar用到的jar包,如commons-lang.jar等。
2、性能没有jackjson好,性能测试见:http://www.iteye.com/topic/561368
3、一般不建议使用。
二、使用字符串操作Json
1、在实际项目中也会存在这样的解析,后台输出的为json格式的字符串,可以使用字符串拼接的方式输出。
2、这种方法的局限性和效率是值得商榷的,但也是一种方法。如以下代码示例:
三、Jackson操作Json
需要Jackson的jar包,如:jackson-core-asl-1.9.2.jar、jackson-jaxrs-1.9.2.jar、jackson-mapper-asl-1.9.2.jar。
1、java类型数据转换成JSON格式
1)javaBean转换成Json对象
A、定义2个javaBean,UserInfoBean和AccountBean,代码如下
B、把javaBean转换成Json对象,利用jackson中JsonGenerator类的writeObject()方法
2)、Map转换成Json对象。
3)List转换成Json数组
4)可以封装成一个方法,objectToJson()。
5)自定义拼接成Json字符串。这个挺有意思。
2、Json字符串转换成Java类型数据
1)json转换成javaBean,利用ObjectMapper.readValue()方法。
2)将json字符串转换成List<Map>
一、java api 操作Json
1、需要引进json的jar包,如:json-lib-2.3-jdk15.jar,还有很多这个jar用到的jar包,如commons-lang.jar等。
2、性能没有jackjson好,性能测试见:http://www.iteye.com/topic/561368
3、一般不建议使用。
二、使用字符串操作Json
1、在实际项目中也会存在这样的解析,后台输出的为json格式的字符串,可以使用字符串拼接的方式输出。
2、这种方法的局限性和效率是值得商榷的,但也是一种方法。如以下代码示例:
/** Out format: {key:value}*/ public static String toJson(String msgName, String msgValue) { String jsonStr = null; if (null == msgName || msgName.trim().length() == 0) { return null; } jsonStr = "{\'" + msgName + "\':"; if (null == msgValue) { msgValue = ""; } jsonStr += "\'" + msgValue + "\'}"; return jsonStr; } /** Out format: [key,value]*/ public static String toJson(String msgName, Long msgValue) { String jsonStr = null; if (null == msgName || msgName.trim().length() == 0) { return null; } jsonStr = "[\'" + msgName + "\',"; if (null == msgValue) { msgValue = (long) 0; } jsonStr += msgValue + "]"; return jsonStr; } public static String toJson(HashMap<String, String> msgMap) { String jsonStr = null; if (null == msgMap || msgMap.size() == 0) { return null; } Iterator<Entry<String, String>> it = msgMap.entrySet().iterator(); while (it.hasNext()) { Entry<String, String> entry = it.next(); String msgName = entry.getKey(); String msgValue = entry.getValue(); if (null == msgValue) { msgValue = ""; } String tempStr = "\"" + msgName + "\":" + "\"" + msgValue + "\""; if (null == jsonStr) { jsonStr = tempStr; } else { jsonStr = jsonStr + "," + tempStr; } } jsonStr = "{" + jsonStr + "}"; return jsonStr; }
三、Jackson操作Json
需要Jackson的jar包,如:jackson-core-asl-1.9.2.jar、jackson-jaxrs-1.9.2.jar、jackson-mapper-asl-1.9.2.jar。
1、java类型数据转换成JSON格式
1)javaBean转换成Json对象
A、定义2个javaBean,UserInfoBean和AccountBean,代码如下
package json.jackson.entity; /** * * UserInfoBean.java * * @Title 用户信息类 * @Des * @author Sam-Sho * @date 2014-9-29 */ public class UserInfoBean { private int id; private String name; //getter、setter public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
package json.jackson.entity; /** * * AccountBean.java * * @Title * @Des * @author Sam-Sho * @date 2014-9-29 */ public class AccountBean { private int id; private String name; private String email; private String address; private Birthday birthday; //getter、setter @Override public String toString() { return this.name + "#" + this.id + "#" + this.address + "#" + this.birthday + "#" + this.email; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Birthday getBirthday() { return birthday; } public void setBirthday(Birthday birthday) { this.birthday = birthday; } }
B、把javaBean转换成Json对象,利用jackson中JsonGenerator类的writeObject()方法
//构建一个bean UserInfoBean userBean = new UserInfoBean(); userBean.setId(99999); userBean.setName("ked"); // 利用ObjectMapper的writeObject()方法 ObjectMapper mapper = new ObjectMapper(); Writer sw = new StringWriter();//使用StringWriter try { JsonGenerator json = mapper.getJsonFactory().createJsonGenerator(sw); json.writeObject(userBean); sw.close(); } catch (JsonProcessingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } String bean = sw.toString(); System.out.println(bean);
【输出】 {"id":99999,"name":"ked"}
2)、Map转换成Json对象。
//构建一个map Map<String, String> map = new HashMap<String, String>(); map.put("ID", "123456789"); map.put("NAME", "SAM"); map.put("GENDER", "MAN"); //把map转换成json ObjectMapper mapper = new ObjectMapper(); Writer sw = new StringWriter(); try { JsonGenerator json = mapper.getJsonFactory().createJsonGenerator(sw); json.writeObject(map); sw.close(); } catch (JsonProcessingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } String mapJson = sw.toString(); System.out.println(mapJson);//{"NAME":"SAM","GENDER":"MAN","ID":"123456789"}
3)List转换成Json数组
//构建一个List List<UserInfoBean> list = new ArrayList<UserInfoBean>(); UserInfoBean userBean = new UserInfoBean(); userBean.setId(99999); userBean.setName("ked"); UserInfoBean userBean2 = new UserInfoBean(); userBean2.setId(111111); userBean2.setName("SAM"); list.add(userBean); list.add(userBean2); //把List转换成json数组 ObjectMapper mapper = new ObjectMapper(); Writer sw = new StringWriter(); try { JsonGenerator json = mapper.getJsonFactory().createJsonGenerator(sw); json.writeObject(list); sw.close(); } catch (JsonProcessingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } String objListJson = sw.toString(); System.out.println(objListJson);//[{"id":99999,"name":"ked"},{"id":111111,"name":"SAM"}]
4)可以封装成一个方法,objectToJson()。
/** * Object转化为json数据 * @param object * @return */ public static String objectToJson(Object object){ ObjectMapper mapper = new ObjectMapper(); Writer sw = new StringWriter(); try { JsonGenerator json = mapper.getJsonFactory().createJsonGenerator(sw); json.writeObject(object); sw.close(); } catch (JsonProcessingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return sw.toString(); }
5)自定义拼接成Json字符串。这个挺有意思。
//拼接自定义json字符串 String[] arr = { "a", "b", "c" }; ObjectMapper objectMapper = new ObjectMapper(); JsonGenerator jsonGenerator = = objectMapper.getJsonFactory().createJsonGenerator(System.out, JsonEncoding.UTF8); 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();//} 【输出】 // {"user":{"name":"jackson","sex":true,"age":22},"infos":[22,"this is array"]} // 拼接自定义json字符串2 AccountBean bean = new AccountBean(); bean.setAddress("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();//} 【输出】 //} {"user":{"id":1,"name":"haha","email":"email","address":"address","birthday":null},"infos":["a","b","c"]}
2、Json字符串转换成Java类型数据
1)json转换成javaBean,利用ObjectMapper.readValue()方法。
/** * 将json字符串转换成JavaBean对象 */ public void readJson2Entity() { String json = "{\"address\":\"address\",\"name\":\"haha\",\"id\":1,\"email\":\"email\"}"; ObjectMapper mapper = new ObjectMapper(); try { AccountBean acc = mapper.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(); } }【输出】
haha haha#1#address#null#email
2)将json字符串转换成List<Map>
/** * json字符串转换成list * 将json字符串转换成List<Map> */ @SuppressWarnings("unchecked") public void readJson2List() { String json = "[{\"address\": \"address2\",\"name\":\"haha2\",\"id\":2,\"email\":\"email2\"},"+ "{\"address\":\"address\",\"name\":\"haha\",\"id\":1,\"email\":\"email\"}]"; ObjectMapper mapper = new ObjectMapper(); try { List<LinkedHashMap<String, Object>> list = mapper.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(); } }【输出】
2 address:address2 name:haha2 id:2 email:email2 address:address name:haha id:1 email:email
相关文章推荐
- java Jackson 库操作 json 的基本演示
- java Jackson 库操作 json 的基本演示
- Android(java)学习笔记208:Android中操作JSON数据(Json和Jsonarray)
- java Jackson 库操作 json 的基本演示
- JSON解析类库之Jackson(1) --- Jackson类库学习, 生成与解析json数据,json字符串与Java对象互转
- Java使用jackson操作Json格式数据
- JSON详细学习之JackSon in JAVA
- java Jackson 库操作 json 的基本演示
- 学习笔记:DataTables之数据读取和操作(java对象转换为json对象)
- java Jackson 库操作 json 的基本演示
- java 操作json数据 fastjson jackson
- java Jackson 库操作 json 的基本演示
- Java NIO 学习笔记 selector 行为机制分析(select操作 cancel操作)
- JAVA文件-基本操作学习笔记
- json学习(java,js)
- Java学习总结之第十四章 数据库操作
- JSON详细学习之JSONObject in JAVA
- !JAVA学习提高之---- JAVA日期格式化及相关操作
- Java操作JSON的便捷工具类(Gson)
- 2009-05-27技术学习:Java中对XML文档的操作