Json与bean的相互转换

Posted 只为成功找方向,不为失败找借口

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Json与bean的相互转换相关的知识,希望对你有一定的参考价值。

本文使用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

public static <T> Object transformJsonToBeanList(String jsonArr,  
           Class<T> type) {  
       JSONArray jsonArray = JSONArray.fromObject(jsonArr);  
       return JSONArray.toCollection(jsonArray, type);  
   }  
 
 
/**  
 * 项目名称: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的相互转换的主要内容,如果未能解决你的问题,请参考以下文章

使用JAXB实现Bean与Xml相互转换

javabean 与 json 相互转换问题 高手请进!

[转]解析json:与array,list,map,bean,xml相互转化

List与Json的相互转换

JAVA 实现XML与JSON 相互转换

CSV和JSON格式相互转换