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