本文使用json-lib jar包实现Json与bean的相互转换
1.将字符串转为JSON
使用JSONObject.fromObject(str)方法即可将字符串转为JSON对象
使用JSONObject.put("attribute","value")可为JSON添加属性
如果需要转为JSON数组,只需使用JSONArray对象提供的方法即可
/** ???* 一些简单的转换 ???*/ ???public static void transformStringTest() { ???????String str = "{" + "\"id\":" + "\"1\"," + "\"name\":" + "\"zhangsan\"" ???????????????+ "}"; ???????//1.将字符串转为JSON ???????JSONObject jsonObj = JSONObject.fromObject(str); ???????System.out.println(jsonObj.toString()); ???????//JSON添加属性 ???????jsonObj.put("age", "22"); ???????System.out.println(jsonObj.toString()); ???????//2.将对象转为数组 ???????JSONArray jsonArr = JSONArray.fromObject(jsonObj); ???????System.out.println(jsonArr.toString()); ???????//3.将数组添加到JSON对象中 ???????JSONObject obj = new JSONObject(); ???????obj.put("employees", jsonArr); ???????System.out.println(obj.toString()); ???} ?
/* 输出内容 ?* {"id":"1","name":"zhangsan"} ??* {"id":"1","name":"zhangsan","age":"22"} ?* [{"id":"1","name":"zhangsan","age":"22"}] ?* {"employees":[{"id":"1","name":"zhangsan","age":"22"}]} ?*/ ?
2.将对象转为JSON
首先创建People类
public class People { ?????private String name; ???????private String idcard; ???????public People() { ?????} ???????public People(String name, String idcard) { ?????????this.name = name; ?????????this.idcard = idcard; ?????} ???????public String getName() { ?????????return name; ?????} ???????public void setName(String name) { ?????????this.name = name; ?????} ???????public String getIdcard() { ?????????return idcard; ?????} ???????public void setIdcard(String idcard) { ?????????this.idcard = idcard; ?????} ???}
将对象转为JSON同样使用SONObject.fromObject(obj)方法
如果是一个List,转为JSON时需要使用JSONArray将对象转为JSON数组
public static void transformObjectTest() { ?????????People p1 = new People("a", "111111"); ?????????//1.将对象转为json ?????????System.out.println(JSONObject.fromObject(p1)); ?????????List<People> peopleList = new ArrayList<People>(); ?????????peopleList.add(p1); ?????????//2.将list转为json(需要使用数组JSONArray) ?????????JSONArray arr = JSONArray.fromObject(peopleList); ?????????System.out.println(arr.toString()); ?????} ??/*输出内容 ????* {"idcard":"111111","name":"a"} ?????* [{"idcard":"111111","name":"a"}] ????*/
3.JSON转为bean
json转为bean的方法也非常简单,只需使用JSONObject.toBean()方法即可,使用该方法的时候需要传入Bean的class
/** ?????* 将json转换为bean ?????* @param json ?????* @param type ?????* @return ?????*/ ?????public static <T> Object transformJsonToBean(String json, Class<T> type) { ?????????JSONObject jsonObject = JSONObject.fromObject(json); ?????????return JSONObject.toBean(jsonObject, type); ?????} ?
4.JSON转为list<bean>集合
由于是集合,所以需要使用JSONArray,JSONArray提供了toCollection方法,使用该方法同样需要传入bean的class
/** ??* 项目名称:tools ??* 项目包名:com.songfayuantools.json ??* 创建时间:2017年7月31日上午11:58:51 ??* 创建者:Administrator-宋发元 ??* 创建地点: ??*/ ?package com.songfayuantools.json; ???import com.songfayuantools.entity.UserInfo; ???import net.sf.json.JSON; ?import net.sf.json.JSONObject; ?import net.sf.json.xml.XMLSerializer; ???/** ??* 描述:JSONObject使用方法详解 ??* ????JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包。 ??* @author songfayuan ??* 2017年7月31日上午11:58:51 ??*/ ?public class Json { ???????/** ??????* 描述:json字符串转java代码 ??????* @author songfayuan ??????* 2017年8月2日下午2:24:47 ??????*/ ?????public static void jsonToJava() { ?????????System.out.println("json字符串转java代码"); ?????????String jsonStr = "{\"password\":\"123456\",\"username\":\"张三\"}"; ?????????JSONObject jsonObject = JSONObject.fromObject(jsonStr); ?????????String username = jsonObject.getString("username"); ?????????String password = jsonObject.getString("password"); ?????????System.err.println("json--->java \n username="+username+"\t passwor="+password); ?????} ???????????/** ??????* 描述:java代码封装为json字符串 ??????* @author songfayuan ??????* 2017年8月2日下午2:30:58 ??????*/ ?????public static void javaToJSON() { ?????????System.out.println("java代码封装为json字符串"); ?????????JSONObject jsonObject = new JSONObject(); ?????????jsonObject.put("username", "宋发元"); ?????????jsonObject.put("age", 24); ?????????jsonObject.put("sex", "男"); ?????????System.out.println("java--->json \n " + jsonObject.toString()); ?????} ???????????/** ??????* 描述:json字符串转xml字符串 ??????* @author songfayuan ??????* 2017年8月2日下午2:56:30 ??????*/ ?????public static void jsonToXML() { ?????????System.out.println("json字符串转xml字符串"); ?????????String jsonStr = "{\"username\":\"宋发元\",\"password\":\"123456\",\"age\":\"24\"}"; ?????????JSONObject jsonObject = JSONObject.fromObject(jsonStr); ?????????XMLSerializer xmlSerializer = new XMLSerializer(); ?????????xmlSerializer.setRootName("user_info"); ?????????xmlSerializer.setTypeHintsEnabled(false); ?????????String xml = xmlSerializer.write(jsonObject); ?????????System.out.println("json--->xml \n" + xml); ?????} ???????????/** ??????* 描述:xml字符串转json字符串 ??????* @author songfayuan ??????* 2017年8月2日下午3:19:25 ??????*/ ?????public static void xmlToJSON() { ?????????System.out.println("xml字符串转json字符串"); ?????????String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><user_info><password>123456</password><username>宋发元</username></user_info>"; ?????????XMLSerializer xmlSerializer = new XMLSerializer(); ?????????JSON json = xmlSerializer.read(xml); ?????????System.out.println("xml--->json \n" + json.toString()); ?????} ???????????/** ??????* 描述:javaBean转json字符串 ??????* @author songfayuan ??????* 2017年8月2日下午3:39:10 ??????*/ ?????public static void javaBeanToJSON() { ?????????System.out.println("javaBean转json字符串"); ?????????UserInfo userInfo = new UserInfo(); ?????????userInfo.setUsername("宋发元"); ?????????userInfo.setPassword("123456"); ?????????JSONObject jsonObject = JSONObject.fromObject(userInfo); ?????????System.out.println("JavaBean-->json \n" + jsonObject.toString()); ?????} ???????????/** ??????* 描述:javaBean转xml字符串 ??????* @author songfayuan ??????* 2017年8月2日下午3:48:08 ??????*/ ?????public static void javaBeanToXML() { ?????????System.out.println("javaBean转xml字符串"); ?????????UserInfo userInfo = new UserInfo(); ?????????userInfo.setUsername("songfayuan"); ?????????userInfo.setPassword("66666"); ?????????JSONObject jsonObject = JSONObject.fromObject(userInfo); ?????????XMLSerializer xmlSerializer = new XMLSerializer(); ?????????String xml = xmlSerializer.write(jsonObject, "UTF-8"); ?????????System.out.println("javaBean--->xml \n" + xml); ?????} ???????????public static void main(String args[]) { ?// ?????jsonToJava(); ?// ?????javaToJSON(); ?// ?????jsonToXML(); ?// ?????xmlToJSON(); ?// ?????javaBeanToJSON(); ?????????javaBeanToXML(); ?????} ???????} ?
Json与bean的相互转换
原文地址:https://www.cnblogs.com/icebutterfly/p/9009632.html