JSON.parseObject和JSON.toJSONString實(shí)例詳解
JSON.parseObject,是將Json字符串轉(zhuǎn)化為相應(yīng)的對(duì)象;JSON.toJSONString則是將對(duì)象轉(zhuǎn)化為Json字符串。在前后臺(tái)的傳輸過程中,Json字符串是相當(dāng)常用的,這里就不多介紹其功能了,直接舉一下應(yīng)用的小例子,幫助理解這兩個(gè)方法的用法。
首先用maven引入fastjson
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wujiang.test</groupId>
<artifactId>test</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<fastjson_version>1.2.28</fastjson_version>
</properties>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson_version}</version>
</dependency>
</dependencies>
</project>
定義一個(gè)model類,員工,有四個(gè)屬性,如下所示:
package jsonTest;
import java.util.Date;
/**
* @author wujiang
* @version 1.0.0.
* @date 2017/4/30
*/
public class Staff {
private String name;
private Integer age;
private String sex;
private Date birthday;
//省略getter和setter方法
@Override
public String toString() {
return "Staff{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", birthday=" + birthday +
'}';
}
}
好的,下一步,測(cè)試一下JSON.parseObject 和 JSON.toJSONString方法。這里故意在Json字符串中多了一個(gè)telephone,少了一個(gè)Staff中的birthday,看看輸出的對(duì)象會(huì)有什么變化
package jsonTest;
import com.alibaba.fastjson.JSON;
/**
* @author wujiang
* @version 1.0.0.
* @date 2017/4/30
*/
public class jsonTest {
public static void main(String[] args) {
/**
* json字符串轉(zhuǎn)化為對(duì)象
*/
String jsonString = "{name:'Antony',age:'12',sex:'male',telephone:'88888'}";
Staff staff = JSON.parseObject(jsonString, Staff.class);
System.out.println(staff.toString());
/**
* 對(duì)象轉(zhuǎn)化為json字符串
*/
String jsonStr = JSON.toJSONString(staff);
System.out.println(jsonStr);
}
}
輸出結(jié)果
Staff{name='Antony', age=12, sex='male', birthday=null}
{"age":12,"name":"Antony","sex":"male"}
//如果age是String類型,那么輸出結(jié)果變?yōu)?
//{"age":"12","name":"Antony","sex":"male"}
在JSON.parseObject 的時(shí)候,會(huì)去填充名稱相同的屬性。對(duì)于Json字符串中沒有,而model類有的屬性,會(huì)為null;對(duì)于model類沒有,而Json字符串有的屬性,不做任何處理。
至于 JSON.toJSONString 就不需要多說了,看一下就知道
至于應(yīng)用場(chǎng)景,比方說,用戶登錄微信公眾號(hào)的時(shí)候,調(diào)用微信官方的restful接口,得到該用戶的所有信息的一個(gè)Json字符串,然后寫一個(gè)類(將自己需要的信息封裝成一個(gè)類)。例如下面的偽代碼
String s = httpRequest.sendGet("https://api.weixin.qq.com/sns/oauth2/access_token","appid=" + appId + "&secret=" + appSecret + "&code=" + code + "&grant_type=authorization_code");
UserAuthorizationReturn userAuthorizationReturn = JSON.parseObject(s, UserAuthorizationReturn.class);
以上全部為本篇文章的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot RocketMq實(shí)現(xiàn)過程詳解
這篇文章主要介紹了Springboot RocketMq實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
Java中HashMap和Hashtable的區(qū)別小結(jié)
本文主要介紹了Java中HashMap和Hashtable的區(qū)別小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
springmvc字符編碼過濾器CharacterEncodingFilter的使用
這篇文章主要介紹了springmvc字符編碼過濾器CharacterEncodingFilter的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2021-08-08
Idea配置maven-tomcat-plugin插件實(shí)現(xiàn)項(xiàng)目部署
今天小編就為大家分享一篇關(guān)于Idea配置maven-tomcat-plugin插件實(shí)現(xiàn)項(xiàng)目部署,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02
SpringBoot QQ郵箱發(fā)送郵件實(shí)例代碼
大家好,本篇文章主要講的是SpringBoot QQ郵箱發(fā)送郵件實(shí)例代碼,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12
play for scala 實(shí)現(xiàn)SessionFilter 過濾未登錄用戶跳轉(zhuǎn)到登錄頁面
這篇文章主要介紹了play for scala 實(shí)現(xiàn)SessionFilter 過濾未登錄用戶跳轉(zhuǎn)到登錄頁面的相關(guān)資料,需要的朋友可以參考下2016-11-11
關(guān)于Linux服務(wù)器配置java環(huán)境遇到的問題小結(jié)
這篇文章主要介紹了關(guān)于Linux服務(wù)器配置java環(huán)境遇到的問題小結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
Spring實(shí)戰(zhàn)之設(shè)置普通屬性值的方法示例
這篇文章主要介紹了Spring實(shí)戰(zhàn)之設(shè)置普通屬性值的方法,結(jié)合實(shí)例形式分析了Spring設(shè)置普通屬性值的方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-11-11
Springboot微服務(wù)打包Docker鏡像流程解析
這篇文章主要介紹了Springboot微服務(wù)打包Docker鏡像流程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08

