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();
    }  

}  

原文地址:https://www.cnblogs.com/icebutterfly/p/9009632.html

时间: 2024-10-10 16:01:13

Json与bean的相互转换的相关文章

JAVA中,JSON MAP LIST的相互转换

1 JSON包含对象和数组,对应于JAVA中的JSONObject,JSONArray 2 String 转JSON对象 JSONObject.fromObject("String"); String 转JSON数组 JSONArray.fromObject("String"); 3 List 和 JSON互转 JSONObject.toBean() JSONArray.fromObject(List) JAVA中,JSON MAP LIST的相互转换,布布扣,bu

JS中实现JSON对象和JSON字符串之间的相互转换

对于主流的浏览器(比如:firefox,chrome,opera,safari,ie8+),浏览器自己提供了JSON对象,其中的parse和stringify方法实现了JSON对象和JSON字符串之间的相互转换,例如: // JSON对象转JSON字符串,输出:"{\"name\":\"zhangsan\",\"age\":10,\"birthday\":\"2017-08-15T07:09:48.724Z

Jackson2 json 转换Bean, Bean 里没有对应的值 jackson Un的解决方式

遇到这个问题时我找到了 SpringMVC @RequestBody问题:Unrecognized field , not marked as ignorable 这篇文章里说: @JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段,可以满足当前的需要.这个注解还可以指定要忽略的字段.使用方法如下: @JsonIgnoreProperties({ "internalId", "secretKe

json to bean(JSONObject类详解)

原博客地址:http://blog.csdn.net/harrison2010/article/details/43700991 1 方式一 2 /** 3 * Creates a JSONDynaBean from a JSONObject. 4 */ 5 public static Object toBean( JSONObject jsonObject ) 6 返回的数据类型明显不是我们常用的数据类型 7 8 方式二 9 /** 10 * Creates a bean from a JSO

Json与Bean互转,Timestamp类型的问题

Json与Java Bean互相转换时,Bean中的Timestamp字段是无法直接处理的,需要实现两个转换器. DateJsonValueProcessor的作用是Bean转换为Json时将Timepstamp转换为指定的时间格式. 1 import java.text.DateFormat; 2 import java.text.SimpleDateFormat; 3 import java.util.Date; 4 import net.sf.json.JsonConfig; 5 impo

XML 之 与Json或String的相互转换

1.XML与String的相互转换 [1] XML 转为 String //载入Xml文件 XmlDocument xdoc = new XmlDocument(); xdoc.Load("xml文件"); string xmlStr = xdoc.InnerXml; [2] String 转为 XML //载入Xml字符串 XmlDocument xdoc = new XmlDocument(); xdoc.LoadXml("xml字符串"); //保存为Xml文

Spring3.2中返回JSON去掉Bean中NULL值

在Spring3.2中返回Json字符串,过滤掉不需要的Bean中属性对应Json中key的value=null的值,可以同过在Bean中加入注解的方式来过滤 使用jackson-all-1.8.1.jar包,在需要序列化输出Json的类上添加如***解 import org.codehaus.jackson.map.annotate.JsonSerialize; @JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL) public cl

Json系列之二 json to bean(JSONObject类详解)

方式一 /** * Creates a JSONDynaBean from a JSONObject. */ public static Object toBean( JSONObject jsonObject ) 返回的数据类型明显不是我们常用的数据类型 方式二 /** * Creates a bean from a JSONObject, with a specific target class.<br> */ public static Object toBean( JSONObject

json转bean对象

一下为个人收藏,以便下次使用. 前端传的json格式为: [{"suppliercode":"gylhld_gycqlt3_gycqlt1","productname":"乐和乐都套票(成人)","datahandelmethod":"1","producttype":"1","yscpcbj":"140",