查漏补缺10-- json字符串,JSONObject对象,JavaBean对象互转。及@JSONField(name = "AGE")注解的使用

JAVABean 的定义如下

//@JSONField作用在Field时,其name不仅定义了输入key的名称,同时也定义了输出的名称。
public class Person {
    @JSONField(name = "name") // 注意观察生成的JSON串中name和age的区别
    private String name;
//    @JSONField(name = "AGE")
    private String age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

//    public String getAge() {
//        return age;
//    }
//
//    public void setAge(String age) {
//        this.age = age;
//    }
    
//    @JSONField也可以直接作用在get或set方法上
//    @JSONField(name = "name")
//    public String getName() {
//        return name;
//    }
//
//    @JSONField(name = "name")
//    public void setName(String name) {
//        this.name = name;
//    }
//
    @JSONField(name = "AGE")
    public String getAge() {
        return age;
    }

//    @JSONField(name = "AGE")
    public void setAge(String age) {
        this.age = age;
    }
}

初始化及测试类

public class PersonTest {
    private Person person;

    /**
     * 初始化对象
     */
    @Before
    public void setUp() {
        person = new Person();
        person.setName("gyl");
        person.setAge("20");
    }

    package com.javabase.javabase.fastjsonTest;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.junit.Before;
import org.junit.Test;

/**
 * @Author ShawnYang
 * @Date 2019-09-05 11:50
 * @Description TODO
 * 修改人:
 * 修改时间:
 * 修改备注:
 */
public class PersonTest {
    private Person person;

    /**
     * 初始化对象
     */
    @Before
    public void setUp() {
        person = new Person();
        person.setName("gyl");
        person.setAge("20");
    }

    @Test
    public void test() {
        // 1 JAVA对象转换为json字符串
        String jsonStr = JSONObject.toJSONString(person);
        System.out.println("1:" + jsonStr);

        // 2 JAVA 对象转换为json对象

        Object o = JSONObject.toJSON(person);
        //可以看到Object本来就是class com.alibaba.fastjson.JSONObject类型,所以可以强制转换为JSONObject
        System.out.println(o.getClass());
        JSONObject jsonObject = (JSONObject) JSONObject.toJSON(person);
        System.out.println("2:" + jsonObject);

        // 3 字符串转换为json对象
        JSONObject jsonObject2 = JSONObject.parseObject(jsonStr);
        System.out.println("3:" + jsonObject2);

        // 4 字符串转换为JAVA对象,需指定转换的对象的类型
        System.out.println(JSONObject.parseObject(jsonStr, Person.class).getClass());
        Person person = JSONObject.parseObject(jsonStr, Person.class);
        System.out.println("4:" + person);

        // 5 json对象转换为java对象,需指定转换的对象的类型
        person = JSONObject.toJavaObject(jsonObject, Person.class);
        System.out.println("5:" + person);
        System.out.println("5.1:" + person.getName());

        //6 json对象转换为json字符串
        String jsonStr2 = JSONObject.toJSONString(jsonObject);
        System.out.println("6:" + jsonStr2);

        String jsonString = JSONObject.toJSONString(person);
        JSONObject jsonObject22 = (JSONObject) JSONObject.toJSON(person);

        JSONObject jsonObject1 = JSONObject.parseObject(jsonString);
        Person person22 = JSONObject.parseObject(jsonString, Person.class);

        String jsonString1 = JSONObject.toJSONString(jsonObject);
        Person person1 = JSONObject.toJavaObject(jsonObject1, Person.class);

    }
}

结果:

1:{"AGE":"20","name":"gyl"}
class com.alibaba.fastjson.JSONObject
2:{"name":"gyl","AGE":"20"}
3:{"name":"gyl","AGE":"20"}
class com.javabase.javabase.fastjsonTest.Person
4:Person{name='gyl', age='20'}
5:Person{name='gyl', age='20'}
5.1:gyl
6:{"name":"gyl","AGE":"20"}

Json类是JsonObject的抽象父类
在这里插入图片描述
总结:
在这里插入图片描述
都是用的JSONObject的进行方法
① string转化为其他两类 用 toJSONObject;其他两类转化为String用toJSONString
② java转化为json 用toJSON;Json转化为java 为toJavaObject
③ 转化为java对象 入参啊哟执行java对象的类

补充:
Gson 中的Java 对象和String的 转换
序列化为Json: toGson()

//Serialization
BagOfPrimitives obj = new BagOfPrimitives();
Gson gson = new Gson();
String json = gson.toJson(obj); 
//==> json is {"value1":1,"value2":"abc"}

反序列化:

//Deserialization
BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class); 
//==> obj2 is just like obj

总结:
用的是Gson的成员方法
java转为String是 toJson(到String去,所以是转换为String类型)
String转化为java是fromJson(从String来,所以是String类型装换为Json类型或者java类型)

参考:https://www.jb51.net/article/87159.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值