国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java實體和JSON之間的相互轉(zhuǎn)換

這篇具有很好參考價值的文章主要介紹了Java實體和JSON之間的相互轉(zhuǎn)換。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、先寫一個測試用的Java實體

代碼如下:

import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 測試用戶類
 *
 * @author:gan
 * @date: 2023-04-28 15:33
 */
@Data
public class User {
    private String name;

    private Integer age;

    private Date birthday;

    private char sex;

    private Float height;

    private Double weight;

    private BigDecimal money;

    private Boolean adult;

	//下面這些初始化為空,用于后面測試效果時用

    private String nameDesc;

    private Integer ageDesc;

    private Date birthdayDesc;

    private char sexDesc;

    private Float heightDesc;

    private Double weightDesc;

    private BigDecimal moneyDesc;

    private Boolean adultDesc;

    public User() {
    }

    public User(String name, Integer age, Date birthday, char sex, Float height, Double weight, BigDecimal money, Boolean adult) {
        this.name = name;
        this.age = age;
        this.birthday = birthday;
        this.sex = sex;
        this.height = height;
        this.weight = weight;
        this.money = money;
        this.adult = adult;
    }
}

初始化并輸出一下:

public static void main(String[] args) {
        User user = new User("王宇", 25, DateUtil.parse("1998-10-12 13:25:22"), '男', 180.0f, 71.55, new BigDecimal("2104.5"), true);
        System.out.println("toString方法:" + user);
    }

java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言
注意,如果沒有使用“@Data”注解,一定要加上get和set方法,不然轉(zhuǎn)化之后的Json是空的!

二、將Java實體轉(zhuǎn)化為Json

1、基于com.alibaba.fastjson.JSON

主要是對SerializerFeature枚舉類的使用,詳細的可以看這個博客:

https://blog.csdn.net/xiang__liu/article/details/81570923

或者看這里:

https://www.javadoc.io/static/com.alibaba/fastjson/1.2.2/com/alibaba/fastjson/serializer/SerializerFeature.html#BeanToArray

下面是對SerializerFeature的使用演示:

(1)、JSON.toJSONString(user),會丟掉值為空的字段。

User user = new User("王宇", 25, DateUtil.parse("1998-10-12 13:25:22"), '男', 180.0f, 71.55, new BigDecimal("2104.5"), true);
System.out.println("toString方法:" + user);

System.out.println("=================================JSON.toJSONString start================================");

String jsonStr1 = JSON.toJSONString(user);
System.out.println("jsonStr1:" + jsonStr1);

運行結(jié)果如下:

java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言
可以看到,直接使用toJSONString將Java實體轉(zhuǎn)化為Json,會把沒有顯示初始化的字段丟掉。

“\u0000”是char類型的默認值,相對于null。

(2)、JSON.toJSONString(user, SerializerFeature.WriteMapNullValue),保留值為空的字段,并初始化為null。

加上“SerializerFeature.WriteMapNullValue”,會輸出值為空的字段。

User user = new User("王宇", 25, DateUtil.parse("1998-10-12 13:25:22"), '男', 180.0f, 71.55, new BigDecimal("2104.5"), true);
System.out.println("toString方法:" + user);

System.out.println("=================================JSON.toJSONString start================================");

String jsonStr1 = JSON.toJSONString(user);
System.out.println("jsonStr1:" + jsonStr1);

String jsonStr2 = JSON.toJSONString(user, SerializerFeature.WriteMapNullValue);
System.out.println("jsonStr2:" + jsonStr2);

運行結(jié)果如下:

java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言

(3)、JSON.toJSONString(user, SerializerFeature.WriteNonStringValueAsString),會將非空的字段值加上"",并丟掉沒有初始化的字段。

User user = new User("王宇", 25, DateUtil.parse("1998-10-12 13:25:22"), '男', 180.0f, 71.55, new BigDecimal("2104.5"), true);
System.out.println("toString方法:" + user);

System.out.println("=================================JSON.toJSONString start================================");

String jsonStr1 = JSON.toJSONString(user);
System.out.println("jsonStr1:" + jsonStr1);

String jsonStr2 = JSON.toJSONString(user, SerializerFeature.WriteMapNullValue);
System.out.println("jsonStr2:" + jsonStr2);

String jsonStr3 = JSON.toJSONString(user, SerializerFeature.WriteNonStringValueAsString);
System.out.println("jsonStr3:" + jsonStr3);

運行結(jié)果如下:

java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言

(4)、JSON.toJSONString(user, SerializerFeature.WriteNullStringAsEmpty),會將String類型的字段加上"",沒有顯示初始化的String類型參數(shù)保留,保留默認初始化為null的字段,同時丟掉其他未初始化的、非String類型的字段。

User user = new User("王宇", 25, DateUtil.parse("1998-10-12 13:25:22"), '男', 180.0f, 71.55, new BigDecimal("2104.5"), true);
System.out.println("toString方法:" + user);

System.out.println("=================================JSON.toJSONString start================================");

String jsonStr1 = JSON.toJSONString(user);
System.out.println("jsonStr1:" + jsonStr1);

String jsonStr2 = JSON.toJSONString(user, SerializerFeature.WriteMapNullValue);
System.out.println("jsonStr2:" + jsonStr2);

String jsonStr3 = JSON.toJSONString(user, SerializerFeature.WriteNonStringValueAsString);
System.out.println("jsonStr3:" + jsonStr3);

String jsonStr4 = JSON.toJSONString(user, SerializerFeature.WriteNullStringAsEmpty);
System.out.println("jsonStr4:" + jsonStr4);

運行結(jié)果如下:

java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言

(5)、JSON.toJSONString(user, SerializerFeature.WriteNullListAsEmpty),會非空、String類型的字段加上"",保留默認初始化為null的字段,同時丟掉其他未初始化的、非String類型的字段。

User user = new User("王宇", 25, DateUtil.parse("1998-10-12 13:25:22"), '男', 180.0f, 71.55, new BigDecimal("2104.5"), true);
System.out.println("toString方法:" + user);

System.out.println("=================================JSON.toJSONString start================================");

String jsonStr1 = JSON.toJSONString(user);
System.out.println("jsonStr1:" + jsonStr1);

String jsonStr2 = JSON.toJSONString(user, SerializerFeature.WriteMapNullValue);
System.out.println("jsonStr2:" + jsonStr2);

String jsonStr3 = JSON.toJSONString(user, SerializerFeature.WriteNonStringValueAsString);
System.out.println("jsonStr3:" + jsonStr3);

String jsonStr4 = JSON.toJSONString(user, SerializerFeature.WriteNullStringAsEmpty);
System.out.println("jsonStr4:" + jsonStr4);

String jsonStr5 = JSON.toJSONString(user, SerializerFeature.WriteNullListAsEmpty);
System.out.println("jsonStr5:" + jsonStr5);

運行結(jié)果如下:
java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言

(6)、JSON.toJSONString(user, SerializerFeature.QuoteFieldNames),轉(zhuǎn)化之后的字段名會加上"",和默認一樣。

User user = new User("王宇", 25, DateUtil.parse("1998-10-12 13:25:22"), '男', 180.0f, 71.55, new BigDecimal("2104.5"), true);
System.out.println("toString方法:" + user);

System.out.println("=================================JSON.toJSONString start================================");

String jsonStr1 = JSON.toJSONString(user);
System.out.println("jsonStr1:" + jsonStr1);

String jsonStr2 = JSON.toJSONString(user, SerializerFeature.WriteMapNullValue);
System.out.println("jsonStr2:" + jsonStr2);

String jsonStr3 = JSON.toJSONString(user, SerializerFeature.WriteNonStringValueAsString);
System.out.println("jsonStr3:" + jsonStr3);

String jsonStr4 = JSON.toJSONString(user, SerializerFeature.WriteNullStringAsEmpty);
System.out.println("jsonStr4:" + jsonStr4);

String jsonStr5 = JSON.toJSONString(user, SerializerFeature.WriteNullListAsEmpty);
System.out.println("jsonStr5:" + jsonStr5);

String jsonStr6 = JSON.toJSONString(user, SerializerFeature.QuoteFieldNames);
System.out.println("jsonStr6:" + jsonStr6);

運行結(jié)果如下:

java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言

(7)、JSON.toJSONString(user, SerializerFeature.WriteDateUseDateFormat),轉(zhuǎn)化之后Date類型為傳入格式,默認是時間戳。

User user = new User("王宇", 25, DateUtil.parse("1998-10-12 13:25:22"), '男', 180.0f, 71.55, new BigDecimal("2104.5"), true);
System.out.println("toString方法:" + user);

System.out.println("=================================JSON.toJSONString start================================");

String jsonStr1 = JSON.toJSONString(user);
System.out.println("jsonStr1:" + jsonStr1);

String jsonStr2 = JSON.toJSONString(user, SerializerFeature.WriteMapNullValue);
System.out.println("jsonStr2:" + jsonStr2);

String jsonStr3 = JSON.toJSONString(user, SerializerFeature.WriteNonStringValueAsString);
System.out.println("jsonStr3:" + jsonStr3);

String jsonStr4 = JSON.toJSONString(user, SerializerFeature.WriteNullStringAsEmpty);
System.out.println("jsonStr4:" + jsonStr4);

String jsonStr5 = JSON.toJSONString(user, SerializerFeature.WriteNullListAsEmpty);
System.out.println("jsonStr5:" + jsonStr5);

String jsonStr6 = JSON.toJSONString(user, SerializerFeature.QuoteFieldNames);
System.out.println("jsonStr6:" + jsonStr6);

String jsonStr7 = JSON.toJSONString(user, SerializerFeature.WriteDateUseDateFormat);
System.out.println("jsonStr7:" + jsonStr7);

運行結(jié)果如下:

java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言

(8)、JSON.toJSONString(user, SerializerFeature.WriteNullNumberAsZero),轉(zhuǎn)化之后會將沒有初始化的數(shù)字類型(BigDecimal、Float、Double)字段初始化為0,保留初始化為null的字段,丟掉其他類型未顯示初始化的字段。

User user = new User("王宇", 25, DateUtil.parse("1998-10-12 13:25:22"), '男', 180.0f, 71.55, new BigDecimal("2104.5"), true);
System.out.println("toString方法:" + user);

System.out.println("=================================JSON.toJSONString start================================");

String jsonStr1 = JSON.toJSONString(user);
System.out.println("jsonStr1:" + jsonStr1);

String jsonStr2 = JSON.toJSONString(user, SerializerFeature.WriteMapNullValue);
System.out.println("jsonStr2:" + jsonStr2);

String jsonStr3 = JSON.toJSONString(user, SerializerFeature.WriteNonStringValueAsString);
System.out.println("jsonStr3:" + jsonStr3);

String jsonStr4 = JSON.toJSONString(user, SerializerFeature.WriteNullStringAsEmpty);
System.out.println("jsonStr4:" + jsonStr4);

String jsonStr5 = JSON.toJSONString(user, SerializerFeature.WriteNullListAsEmpty);
System.out.println("jsonStr5:" + jsonStr5);

String jsonStr6 = JSON.toJSONString(user, SerializerFeature.QuoteFieldNames);
System.out.println("jsonStr6:" + jsonStr6);

String jsonStr7 = JSON.toJSONString(user, SerializerFeature.WriteDateUseDateFormat);
System.out.println("jsonStr7:" + jsonStr7);

String jsonStr8 = JSON.toJSONString(user, SerializerFeature.WriteNullNumberAsZero);
System.out.println("jsonStr8:" + jsonStr8);

運行結(jié)果如下:

java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言

(9)、JSON.toJSONString(user, SerializerFeature.WriteNullBooleanAsFalse),轉(zhuǎn)化之后會將沒有初始化的Boolean類型字段初始化為false,保留初始化為null的字段,丟掉其他類型未顯示初始化的字段。

User user = new User("王宇", 25, DateUtil.parse("1998-10-12 13:25:22"), '男', 180.0f, 71.55, new BigDecimal("2104.5"), true);
System.out.println("toString方法:" + user);

System.out.println("=================================JSON.toJSONString start================================");

String jsonStr1 = JSON.toJSONString(user);
System.out.println("jsonStr1:" + jsonStr1);

String jsonStr2 = JSON.toJSONString(user, SerializerFeature.WriteMapNullValue);
System.out.println("jsonStr2:" + jsonStr2);

String jsonStr3 = JSON.toJSONString(user, SerializerFeature.WriteNonStringValueAsString);
System.out.println("jsonStr3:" + jsonStr3);

String jsonStr4 = JSON.toJSONString(user, SerializerFeature.WriteNullStringAsEmpty);
System.out.println("jsonStr4:" + jsonStr4);

String jsonStr5 = JSON.toJSONString(user, SerializerFeature.WriteNullListAsEmpty);
System.out.println("jsonStr5:" + jsonStr5);

String jsonStr6 = JSON.toJSONString(user, SerializerFeature.QuoteFieldNames);
System.out.println("jsonStr6:" + jsonStr6);

String jsonStr7 = JSON.toJSONString(user, SerializerFeature.WriteDateUseDateFormat);
System.out.println("jsonStr7:" + jsonStr7);

String jsonStr8 = JSON.toJSONString(user, SerializerFeature.WriteNullNumberAsZero);
System.out.println("jsonStr8:" + jsonStr8);

String jsonStr9 = JSON.toJSONString(user, SerializerFeature.WriteNullBooleanAsFalse);
System.out.println("jsonStr9:" + jsonStr9);

運行結(jié)果如下:

java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言

(10)、JSON.toJSONString(user, SerializerFeature.PrettyFormat),格式化Json,丟掉其他未顯示初始化的字段。

User user = new User("王宇", 25, DateUtil.parse("1998-10-12 13:25:22"), '男', 180.0f, 71.55, new BigDecimal("2104.5"), true);
System.out.println("toString方法:" + user);

System.out.println("=================================JSON.toJSONString start================================");

String jsonStr1 = JSON.toJSONString(user);
System.out.println("jsonStr1:" + jsonStr1);

String jsonStr2 = JSON.toJSONString(user, SerializerFeature.WriteMapNullValue);
System.out.println("jsonStr2:" + jsonStr2);

String jsonStr3 = JSON.toJSONString(user, SerializerFeature.WriteNonStringValueAsString);
System.out.println("jsonStr3:" + jsonStr3);

String jsonStr4 = JSON.toJSONString(user, SerializerFeature.WriteNullStringAsEmpty);
System.out.println("jsonStr4:" + jsonStr4);

String jsonStr5 = JSON.toJSONString(user, SerializerFeature.WriteNullListAsEmpty);
System.out.println("jsonStr5:" + jsonStr5);

String jsonStr6 = JSON.toJSONString(user, SerializerFeature.QuoteFieldNames);
System.out.println("jsonStr6:" + jsonStr6);

String jsonStr7 = JSON.toJSONString(user, SerializerFeature.WriteDateUseDateFormat);
System.out.println("jsonStr7:" + jsonStr7);

String jsonStr8 = JSON.toJSONString(user, SerializerFeature.WriteNullNumberAsZero);
System.out.println("jsonStr8:" + jsonStr8);

String jsonStr9 = JSON.toJSONString(user, SerializerFeature.WriteNullBooleanAsFalse);
System.out.println("jsonStr9:" + jsonStr9);

String jsonStr10 = JSON.toJSONString(user, SerializerFeature.PrettyFormat);
System.out.println("jsonStr10:" + jsonStr10);

運行結(jié)果如下:

java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言

2、基于com.alibaba.fastjson.JSONObject

JSONObject是JSON的子類,并且沒有重寫“toJSONString”方法,所以效果是一樣的。
java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言

代碼如下:

User user = new User("王宇", 25, DateUtil.parse("1998-10-12 13:25:22"), '男', 180.0f, 71.55, new BigDecimal("2104.5"), true);
System.out.println("toString方法:" + user);

System.out.println("=================================JSONObject.toJSONString start================================");

String jsonObjectStr1 = JSONObject.toJSONString(user);
System.out.println("jsonObjectStr1:" + jsonObjectStr1);

String jsonObjectStr2 = JSONObject.toJSONString(user, SerializerFeature.WriteMapNullValue);
System.out.println("jsonObjectStr2:" + jsonObjectStr2);

String jsonObjectStr3 = JSONObject.toJSONString(user, SerializerFeature.WriteNonStringValueAsString);
System.out.println("jsonObjectStr3:" + jsonObjectStr3);

String jsonObjectStr4 = JSONObject.toJSONString(user, SerializerFeature.WriteNullStringAsEmpty);
System.out.println("jsonObjectStr4:" + jsonObjectStr4);

String jsonObjectStr5 = JSONObject.toJSONString(user, SerializerFeature.WriteNullListAsEmpty);
System.out.println("jsonObjectStr5:" + jsonObjectStr5);

String jsonObjectStr6 = JSONObject.toJSONString(user, SerializerFeature.QuoteFieldNames);
System.out.println("jsonObjectStr6:" + jsonObjectStr6);

String jsonObjectStr7 = JSONObject.toJSONString(user, SerializerFeature.WriteDateUseDateFormat);
System.out.println("jsonObjectStr7:" + jsonObjectStr7);

String jsonObjectStr8 = JSONObject.toJSONString(user, SerializerFeature.WriteNullNumberAsZero);
System.out.println("jsonObjectStr8:" + jsonObjectStr8);

String jsonObjectStr9 = JSONObject.toJSONString(user, SerializerFeature.WriteNullBooleanAsFalse);
System.out.println("jsonObjectStr9:" + jsonObjectStr9);

String jsonObjectStr10 = JSONObject.toJSONString(user, SerializerFeature.PrettyFormat);
System.out.println("jsonObjectStr10:" + jsonObjectStr10);

System.out.println("=================================JSONObject.toJSONString end================================");

java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言

3、基于com.fasterxml.jackson.databind.ObjectMapper的writeValueAsString方法

代碼如下:

User user = new User("王宇", 25, DateUtil.parse("1998-10-12 13:25:22"), '男', 180.0f, 71.55, new BigDecimal("2104.5"), true);
System.out.println("toString方法:" + user);

ObjectMapper objectMapper = new ObjectMapper();
try {
    String objectMapperStr = objectMapper.writeValueAsString(user);
    System.out.println("objectMapperStr:" + objectMapperStr);
} catch (JsonProcessingException e) {
    e.printStackTrace();
}

運行結(jié)果如下:

java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言
writeValueAsString方法會保留沒有顯示初始化的的字段,除了char類型初始化值為“\u0000”,其他都為“null”。

4、基于com.google.gson.Gson的toJson方法。

(1)、直接實例化一個Gson,將Java實體傳入實例中的toJson,會丟掉沒有初始化的字段。

User user = new User("王宇", 25, DateUtil.parse("1998-10-12 13:25:22"), '男', 180.0f, 71.55, new BigDecimal("2104.5"), true);
System.out.println("toString方法:" + user);

Gson gson = new Gson();

String gsonStr1 = gson.toJson(user);
System.out.println("gsonStr1:" + gsonStr1);

運行結(jié)果如下:

java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言
char類型還是保留下來了。

(2)、在轉(zhuǎn)化為json的同時,保留沒有顯示初始化的字段。

“Gson gson = new Gson();”只能簡單地將Java實體轉(zhuǎn)為json,要保留沒有顯示初始化的字段,需要用到“GsonBuilder”初始化“Gson”,代碼如下:

User user = new User("王宇", 25, DateUtil.parse("1998-10-12 13:25:22"), '男', 180.0f, 71.55, new BigDecimal("2104.5"), true);
System.out.println("toString方法:" + user);

Gson gson = new GsonBuilder()
    .serializeNulls()
    .create();

String gsonStr1 = gson.toJson(user);
System.out.println("gsonStr1:" + gsonStr1);

運行結(jié)果如下:

java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言
可以看到?jīng)]有顯示初始化的字段都保留下來了,并且值都為“null”。

(3)、設置時間格式。

上面可以看到時間格式默認是國際化格式,想要轉(zhuǎn)換為“yyyy年MM月dd日 時:分:秒”怎么辦?可以使用“setDateFormat”格式化時間,代碼如下:

User user = new User("王宇", 25, DateUtil.parse("1998-10-12 13:25:22"), '男', 180.0f, 71.55, new BigDecimal("2104.5"), true);
System.out.println("toString方法:" + user);

Gson gson = new GsonBuilder()
    .serializeNulls()
    .setDateFormat("yyyy年MM月dd日 HH:mm:ss")
    .create();

String gsonStr1 = gson.toJson(user);
System.out.println("gsonStr1:" + gsonStr1);

運行結(jié)果如下:

java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言
可以看到時間已經(jīng)轉(zhuǎn)換為目標格式。

(4)、格式化輸出。

如果覺得轉(zhuǎn)換之后的json只有一行不好看,可以使用“setPrettyPrinting”格式化json的格式,代碼如下:

User user = new User("王宇", 25, DateUtil.parse("1998-10-12 13:25:22"), '男', 180.0f, 71.55, new BigDecimal("2104.5"), true);
System.out.println("toString方法:" + user);

Gson gson = new GsonBuilder()
    .serializeNulls()
    .setDateFormat("yyyy年MM月dd日 HH:mm:ss")
    .setPrettyPrinting()
    .create();

String gsonStr1 = gson.toJson(user);
System.out.println("gsonStr1:" + gsonStr1);

運行結(jié)果如下:

java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言

三、將Json轉(zhuǎn)換為Java實體

1、先拿到測試Json

拿到測試用的Java實體轉(zhuǎn)化為Json,格式化后如下:

{
	"adult": true,
	"adultDesc": null,
	"age": 25,
	"ageDesc": null,
	"birthday": 908169922000,
	"birthdayDesc": null,
	"height": 180.0,
	"heightDesc": null,
	"money": 2104.5,
	"moneyDesc": null,
	"name": "王宇",
	"nameDesc": null,
	"sex": "男",
	"sexDesc": "\u0000",
	"weight": 71.55,
	"weightDesc": null
}

2、基于com.alibaba.fastjson.JSON

使用JSON的parseObject(String text, Class clazz)方法可以直接將Json字符轉(zhuǎn)化為對應clazz的Java實體,代碼如下:

String userJson = "{\"adult\":true,\"adultDesc\":null,\"age\":25,\"ageDesc\":null,\"birthday\":908169922000,\"birthdayDesc\":null,\"height\":180.0,\"heightDesc\":null,\"money\":2104.5,\"moneyDesc\":null,\"name\":\"王宇\",\"nameDesc\":null,\"sex\":\"男\(zhòng)",\"sexDesc\":\"\\u0000\",\"weight\":71.55,\"weightDesc\":null}";
System.out.println("userJson:" + userJson);

User user = JSON.parseObject(userJson, User.class);
System.out.println("user:" + user);

運行結(jié)果如下:

java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言

3、基于com.alibaba.fastjson.JSONObject

JSONObject中轉(zhuǎn)化Java實體的方法parseObject也是來自JSON,并且沒有重寫,效果是一樣的,代碼如下:

String userJson = "{\"adult\":true,\"adultDesc\":null,\"age\":25,\"ageDesc\":null,\"birthday\":908169922000,\"birthdayDesc\":null,\"height\":180.0,\"heightDesc\":null,\"money\":2104.5,\"moneyDesc\":null,\"name\":\"王宇\",\"nameDesc\":null,\"sex\":\"男\(zhòng)",\"sexDesc\":\"\\u0000\",\"weight\":71.55,\"weightDesc\":null}";
System.out.println("userJson:" + userJson);

User user = JSONObject.parseObject(userJson, User.class);
System.out.println("user:" + user);

運行結(jié)果如下:

java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言

4、基于com.fasterxml.jackson.databind.ObjectMapper的readValue方法

需要先實例化ObjectMapper,再調(diào)用readValue方法,代碼如下:

String userJson = "{\"adult\":true,\"adultDesc\":null,\"age\":25,\"ageDesc\":null,\"birthday\":908169922000,\"birthdayDesc\":null,\"height\":180.0,\"heightDesc\":null,\"money\":2104.5,\"moneyDesc\":null,\"name\":\"王宇\",\"nameDesc\":null,\"sex\":\"男\(zhòng)",\"sexDesc\":\"\\u0000\",\"weight\":71.55,\"weightDesc\":null}";
System.out.println("userJson:" + userJson);

ObjectMapper objectMapper = new ObjectMapper();
try {
    User user = objectMapper.readValue(userJson, User.class);
    System.out.println("user:" + user);
} catch (JsonProcessingException e) {
    e.printStackTrace();
}

運行結(jié)果如下:

java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言

5、基于com.google.gson.Gson

Gson實例化后,使用fromJson方法將Json轉(zhuǎn)化為Java實體,代碼如下:

 String userJson = "{\"adult\":true,\"adultDesc\":null,\"age\":25,\"ageDesc\":null,\"birthday\":908169922000,\"birthdayDesc\":null,\"height\":180.0,\"heightDesc\":null,\"money\":2104.5,\"moneyDesc\":null,\"name\":\"王宇\",\"nameDesc\":null,\"sex\":\"男\(zhòng)",\"sexDesc\":\"\\u0000\",\"weight\":71.55,\"weightDesc\":null}";
 System.out.println("userJson:" + userJson);

 Gson gson = new Gson();
 User user = gson.fromJson(userJson, User.class);
 System.out.println("user:" + user);

運行結(jié)果如下:
java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言
可以看到時間戳轉(zhuǎn)Date類型報錯了。

需要使用GsonBuilder進行實例化,在適配一下Date類型的字段。代碼如下:

String userJson = "{\"adult\":true,\"adultDesc\":null,\"age\":25,\"ageDesc\":null,\"birthday\":908169922000,\"birthdayDesc\":null,\"height\":180.0,\"heightDesc\":null,\"money\":2104.5,\"moneyDesc\":null,\"name\":\"王宇\",\"nameDesc\":null,\"sex\":\"男\(zhòng)",\"sexDesc\":\"\\u0000\",\"weight\":71.55,\"weightDesc\":null}";
System.out.println("userJson:" + userJson);

Gson gson = new GsonBuilder()
        .registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {
            @Override
            public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
                return new Date(json.getAsJsonPrimitive().getAsLong());
            }
        })
        .create();
User user = gson.fromJson(userJson, User.class);
System.out.println("user:" + user);

再次運行:

java實體類轉(zhuǎn)json,學習,java,json,開發(fā)語言文章來源地址http://www.zghlxwxcb.cn/news/detail-657812.html

到了這里,關(guān)于Java實體和JSON之間的相互轉(zhuǎn)換的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • Json對象和Json字符串之間相互轉(zhuǎn)換

    Json對象和Json字符串之間相互轉(zhuǎn)換

    作為前端開發(fā),在和后端進行聯(lián)調(diào)接口時,總會遇到要求傳JSON字符串或是JSON對象,或者是返回值里是JSON字符串要在頁面上展示JSON對象這種情況,都需要前端開發(fā)人員對Json對象和Json對象進行相互轉(zhuǎn)換,得到想要的結(jié)果。 廢話不多說,直接上干貨: 1.首先定義一個Json對象:

    2024年02月11日
    瀏覽(34)
  • java對象與Json字符串的相互轉(zhuǎn)換

    文章目錄 1.Json對象轉(zhuǎn)換為java 對象 2. Java對象轉(zhuǎn)換JSON 1.Json對象轉(zhuǎn)換為java 對象 導入jackson的相關(guān)jar包 創(chuàng)建Jackson核心對象 ObjectMapper 調(diào)用ObjectMapper的相關(guān)方法進行轉(zhuǎn)換 2. Java對象轉(zhuǎn)換JSON 常見的解析器:Jsonlib,Gson,fastjson,jackson 1.導入jackson的相關(guān)jar包 2.創(chuàng)建Jackson核心對象 Obj

    2024年02月09日
    瀏覽(31)
  • Java 解析多層嵌套json數(shù)據(jù)及json字符串與對象的相互轉(zhuǎn)換

    Java 解析多層嵌套json數(shù)據(jù)及json字符串與對象的相互轉(zhuǎn)換

    本文主要介紹java解析多層嵌套json數(shù)據(jù)以及字符串與JSON對象之間的相互轉(zhuǎn)換,包括:json字符串的取值,json對象與字符串的相互轉(zhuǎn)換,字符串轉(zhuǎn)化為java對象,字符串轉(zhuǎn)化為javaList列表等。 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 數(shù)據(jù)格式:JSON實際上就是鍵值對(

    2024年02月04日
    瀏覽(32)
  • Java入門-java對象與json之間的轉(zhuǎn)換

    使用jackson實現(xiàn)java對象轉(zhuǎn)為Json字符串 引入依賴 對象轉(zhuǎn)json字符串 測試 使用Jackson對象完成轉(zhuǎn)換工作。 json字符串轉(zhuǎn)換對象 測試

    2024年02月22日
    瀏覽(17)
  • 【mybatis-plus實體類復雜對象字段json自動相互轉(zhuǎn)換,以及自定義字段類型解析器】

    引言: mybatis-plus集合對象字段json如何自動進行相互的轉(zhuǎn)換? 怎樣在使用mybatis-plus操作數(shù)據(jù)表的時候自動對實體類屬性進行自動解析? 我們平時在做開發(fā)的時候,會遇到一個字段保存json串的情況。一般情況下mybatis-plus在做插入/更新之前將對象手動轉(zhuǎn)換成json串,查詢要用的時

    2023年04月13日
    瀏覽(17)
  • IDEA插件系列(6):GsonFormatPlus插件——JSON字符串轉(zhuǎn)換Java實體類

    IDEA插件系列(6):GsonFormatPlus插件——JSON字符串轉(zhuǎn)換Java實體類

    GsonFormatPlus JSON字符串與Java實體類的相互轉(zhuǎn)換。 第一種安裝方式是使用IDEA下載插件進行安裝 第二種安裝方式是使用離線插件進行安裝 插件下載地址:https://plugins.jetbrains.com/plugin/7654-gsonformat/ 3. 使用方法 先在項目的默認包目錄下創(chuàng)建一個空的類 右鍵-生成(Alt+insert) 選中G

    2024年02月12日
    瀏覽(26)
  • Java中的List<T>對象與Json格式的字符串的相互轉(zhuǎn)換

    在這里我隨便舉一個例子 OK,以上就是互相轉(zhuǎn)換的過程 我使用的場景是在訂單的訂單列表項這里,涉及到數(shù)據(jù)庫相應字段數(shù)據(jù)的存放與提取,我的做法是,將List轉(zhuǎn)換為Json格式字符串存入,取時再將Json格式轉(zhuǎn)為List

    2024年02月15日
    瀏覽(28)
  • golang學習-golang結(jié)構(gòu)體和Json相互轉(zhuǎn)換

    1、結(jié)構(gòu)體轉(zhuǎn)為json對象 ? ? v, _ := json.Marshal(student) ? ? jsonStr := string(v) // 結(jié)構(gòu)體轉(zhuǎn)為json對象 2、json字符串轉(zhuǎn)為結(jié)構(gòu)體 ? ? var s1 Student ? ? err := json.Unmarshal([]byte(str), s1) //json 字符串轉(zhuǎn)為結(jié)構(gòu)體 ? ?3、結(jié)構(gòu)體標簽 表示的是轉(zhuǎn)換為json對象時,ID字段變?yōu)閕d,Name字段變?yōu)閚ame. type

    2024年01月23日
    瀏覽(24)
  • Java中實體與Map的相互轉(zhuǎn)換

    一、在Java中,可以通過以下方法將實體類轉(zhuǎn)換為Map: 利用Java反射機制: 利用Java 8 Stream API: 以上兩種方法都可以將實體類轉(zhuǎn)換為Map。需要注意的是,這些方法僅會將實體類中的屬性轉(zhuǎn)換為Map中的鍵值對,不會包含方法、構(gòu)造器、父類屬性等其他部分。 二、要將map轉(zhuǎn)換為實

    2024年02月05日
    瀏覽(30)
  • Java-json相關(guān)轉(zhuǎn)換,JSONObject與實體類/map互轉(zhuǎn)、List/List<map>和JSONArray互轉(zhuǎn)、獲取JSONObject中的key value、字符串String轉(zhuǎn)換等

    博客背景是Java開發(fā)。json相關(guān)的轉(zhuǎn)換、取值等在日常開發(fā)中經(jīng)常使用,但有時候還是會忘記or遇到些奇奇怪怪的問題。以此記錄,提醒自己~不定期更新~ 實體類和JSONObject互轉(zhuǎn) Map和JSONObject互轉(zhuǎn) String轉(zhuǎn)JSONObject 實體類轉(zhuǎn)JSON字符串時不過濾NULL空值 獲取JSONObject中的key value List和

    2024年02月12日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包