您的位置:首页 > 编程语言 > Java开发

JSON学习(二):java对象与json对象间的相互转换

2017-04-10 14:59 453 查看
工程中所需的jar包,因为在网上不太好找,所以我将它放到我的网盘里了,如有需要随便下载。

点击下载

1.简单的解析json字符串

首先将json字符串转换为json对象,然后再解析json对象,过程如下。
JSONObject jsonObject = JSONObject.fromObject(jsonStr);

[java] view
plain copy

<pre></pre><span style="white-space:pre"></span>  

<pre></pre>  

 
根据json中的键得到它的值
String name = jsonObject.getString("name");

int num = jsonObject.getInt("num");

String sex = jsonObject.getString("sex");

int age = jsonObject.getInt("age");

2.将json字符串转换为java对象

同样先将json字符串转换为json对象,再将json对象转换为java对象,如下所示。
JSONObject obj = new JSONObject().fromObject(jsonStr);//将json字符串转换为json对象

将json对象转换为java对象
Person jb = (Person)JSONObject.toBean(obj,Person.class);//将建json对象转换为Person对象

3.将java对象转换为json字符串

先将java对象转换为json对象,在将json对象转换为json字符串
JSONObject json = JSONObject.fromObject(obj);//将java对象转换为json对象

String str = json.toString();//将json对象转换为字符串

完整代码如下:

[java] view
plain copy

package baz.parse;  

  

import java.util.ArrayList;  

import java.util.List;  

  

import net.sf.json.JSON;  

import net.sf.json.JSONArray;  

import net.sf.json.JSONObject;  

import net.sf.json.JSONSerializer;  

import baz.bean.Person;  

  

public class ParseJson {  

      

    private String jsonStr;  

      

    public ParseJson() {  

          

    }  

      

    public ParseJson(String str){  

        this.jsonStr = str;  

    }  

    /** 

     * 解析json字符串 

     */  

    public void parse(){  

        JSONObject jsonObject = JSONObject.fromObject(jsonStr);  

        String name = jsonObject.getString("name");  

        int num = jsonObject.getInt("num");  

        String sex = jsonObject.getString("sex");  

        int age = jsonObject.getInt("age");  

          

        System.out.println(name + " " + num + " " + sex + " " + age);  

    }  

    //将json字符串转换为java对象  

    public Person JSON2Object(){  

        //接收{}对象,此处接收数组对象会有异常  

        if(jsonStr.indexOf("[") != -1){  

            jsonStr = jsonStr.replace("[", "");  

        }  

        if(jsonStr.indexOf("]") != -1){  

            jsonStr = jsonStr.replace("]", "");  

        }  

        JSONObject obj = new JSONObject().fromObject(jsonStr);//将json字符串转换为json对象  

        Person jb = (Person)JSONObject.toBean(obj,Person.class);//将建json对象转换为Person对象  

        return jb;//返回一个Person对象  

    }  

      

  

}  

[java] view
plain copy

package baz.bean;  

  

public class Person {  

      

    private String name;  

    private int num;  

    private String sex;  

    private int age;  

      

    public Person() {  

        // TODO Auto-generated constructor stub  

    }  

  

    public Person(String name, int num, String sex, int age) {  

        super();  

        this.name = name;  

        this.num = num;  

        this.sex = sex;  

        this.age = age;  

    }  

  

  

  

    public String getName() {  

        return name;  

    }  

  

    public void setName(String name) {  

        this.name = name;  

    }  

  

    public int getNum() {  

        return num;  

    }  

  

    public void setNum(int num) {  

        this.num = num;  

    }  

  

    public String getSex() {  

        return sex;  

    }  

  

    public void setSex(String sex) {  

        this.sex = sex;  

    }  

  

    public int getAge() {  

        return age;  

    }  

  

    public void setAge(int age) {  

        this.age = age;  

    }  

      

}  

 将java对象转换为json字符串

[java] view
plain copy

package baz.cons;  

  

  

import net.sf.json.JSONObject;  

  

  

/** 

 * 将java对象转换为json字符串 

 * @author Administrator 

 * 

 */  

public class ConsJson {  

      

    public ConsJson() {  

        // TODO Auto-generated constructor stub  

    }  

      

    public String Object2Json(Object obj){  

        JSONObject json = JSONObject.fromObject(obj);//将java对象转换为json对象  

        String str = json.toString();//将json对象转换为字符串  

          

        return str;  

    }  

}  

测试类:

[java] view
plain copy

package baz.test;  

  

import java.util.List;  

  

import baz.bean.Person;  

import baz.cons.ConsJson;  

import baz.parse.ParseJson;  

  

  

public class Test {  

    public static void main(String[] args) {  

          

        //将字符串转换为json对象,然后根据建得到相应的值  

        ParseJson pj = new ParseJson("{\"name\":\"gu\",\"num\":123456,\"sex\":\"male\",\"age\":24}");  

        pj.parse();  

          

        //将一个json字符串转换为java对象  

        Person p = pj.JSON2Object();  

        System.out.println("Name:" + p.getName());  

        System.out.println("Num:" + p.getNum());  

        System.out.println("Sex:" + p.getSex());  

        System.out.println("age:" + p.getAge());  

          

        //将一个java对象转换为Json字符串  

        Person p1 = new Person("gu1",123,"male",23);  

        ConsJson cj = new ConsJson();  

        String str1 = cj.Object2Json(p1);  

        System.out.println(str1);  

          

    }  

  

}  

测试输出如下:

gu 123456 male 24

Name:gu

Num:123456

Sex:male

age:24

{"age":23,"name":"gu1","num":123,"sex":"male"}

这只是最简单使用方法,其他的使用我会在后期中更新。
我只是初学者,欢迎大侠拍砖!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: