java-编码笔记-json字符串、json对象、java对象间的相互转换

1.概述 json字符串、json对象、java对象间的相互转换

1.1转换图 

1.2 转换表 

字符串JSONObject.parseObject(json字符串, java类型);java对象
JSONObject.parseObject(json字符串)json对象
java对象(JSONObject) JSONObject.toJSON(java对象)
JSONObject.toJSONString(java对象)字符串
json对象json对象.toJSONString();
JSONObject.toJavaObject(json对象, java类型);java对象

2. 代码 

 

package test.java.xmltest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class JsonTest {

    public static void main(String[] args) {
	// TODO Auto-generated method stub
	System.out.println("json测试");
	JsonTest jt = new JsonTest();
	// jt.fun();
	jt.strToJObject();
	jt.strToObject();
	jt.objectToJObject();
	jt.objectToJStr();
	jt.jObjectToStr();
	jt.jObjectToObject();
	jt.testJsonArray();
	jt.testJsonArray2();
    }

    private void strToJObject() {
	String stuString = "{\"age\":2,\"name\":\"公众号编程大道\",\"sex\":\"m\"}";
	// JSON字符串转换成JSON对象
	JSONObject jsonObject1 = JSONObject.parseObject(stuString);
	System.out.println("JSON字符串转换成JSON对象\n" + jsonObject1);
    }

    private void strToObject() {
	String stuString = "{\"age\":2,\"name\":\"公众号编程大道\",\"sex\":\"m\"}";
	// JSON字符串转换成Java对象
	Student student1 = JSONObject.parseObject(stuString, Student.class);
	System.out.println("JSON字符串转换成Java对象\n" + student1);
    }
    
    private void objectToJObject() {
	Student stu = new Student("公众号编程大道", "m", 2);
	 
        //Java对象转化为JSON对象
        JSONObject jsonObject = (JSONObject) JSONObject.toJSON(stu);
        System.out.println("Java对象转化为JSON对象\n" + jsonObject);

    }
    private void objectToJStr() {
	Student stu = new Student("公众号编程大道", "m", 2);
        //Java对象转换成JSON字符串
        String stuString = JSONObject.toJSONString(stu);
        System.out.println("Java对象转换成JSON字符串\n" + stuString);
    }
    
    private void jObjectToStr() {
	Student stu = new Student("公众号编程大道", "m", 2);
	 
        //先转成JSON对象
        JSONObject jsonObject = (JSONObject) JSONObject.toJSON(stu);
 
        //JSON对象转换为JSON字符串
        String jsonString = jsonObject.toJSONString();
        System.out.println("JSON对象转换为JSON字符串\n" + jsonString);
    }
    
    private void jObjectToObject() {
	Student stu = new Student("公众号编程大道", "m", 2);
	 
        //先转成JSON对象
        JSONObject jsonObject = (JSONObject) JSONObject.toJSON(stu);
        
        //JSON对象转换成Java对象
        Student student = JSONObject.toJavaObject(jsonObject, Student.class);
        System.out.println("JSON对象转换成Java对象\n" + student);
    }
    private void testJsonArray() {
	 System.out.println("JSON数组测试1");
	String s = "[{\"id\":\"17051801\",\"name\":\"lucy\"},{\"id\":\"17051802\",\"name\":\"peter\"}]";
        JSONArray array = JSONObject.parseArray(s);
        for (int i = 0; i < array.size(); i++) {
            //JSONArray中的数据转换为String类型需要在外边加"";不然会报出类型强转异常!
            String str = array.get(i)+"";
            JSONObject object = JSON.parseObject(str);
            System.out.println(object.get("name"));
        }
    }
    private void testJsonArray2() {
	 System.out.println("JSON数组测试2");
	String s = "[{\"id\":\"17051801\",\"name\":\"lucy\"},{\"id\":\"17051802\",\"name\":\"peter\"}]";
       JSONArray array = JSONObject.parseArray(s);
       for (int i = 0; i < array.size(); i++) {
           //JSONArray中的数据转换为String类型需要在外边加"";不然会报出类型强转异常!
           JSONObject object = array.getJSONObject(i);
           System.out.println(object.get("name"));
       }
   }
}

class Student {
    public Student(String name,String sex,int age) {
	this.name = name;
	this.sex = sex;
	this.age = age;
    }
    public Student() {
	
    }
    public int age;
    public String name;
    public String sex;

    public String toString() {
	return "age:"+age+"name:"+name+"sex:"+sex;
    }
}

3.运行效果

json测试
JSON字符串转换成JSON对象
{"age":2,"name":"公众号编程大道","sex":"m"}
JSON字符串转换成Java对象
age:2name:公众号编程大道sex:m
Java对象转化为JSON对象
{"age":2,"name":"公众号编程大道","sex":"m"}
Java对象转换成JSON字符串
{"age":2,"name":"公众号编程大道","sex":"m"}
JSON对象转换为JSON字符串
{"age":2,"name":"公众号编程大道","sex":"m"}
JSON对象转换成Java对象
age:2name:公众号编程大道sex:m
JSON数组测试1
lucy
peter
JSON数组测试2
lucy
peter

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值