日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

java rest 序列化_http请求/restful/序列化反序列化/JSON

發(fā)布時間:2025/3/21 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java rest 序列化_http请求/restful/序列化反序列化/JSON 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.為什么要實現(xiàn)Serializable

(1)將內(nèi)存中的對象數(shù)據(jù)存在磁盤中持久化

(2)將對象從一個應(yīng)用程序發(fā)送到另一個應(yīng)用程序

實現(xiàn)Serializable接口可以把對象序列化為字節(jié)流,實現(xiàn)傳輸必須實現(xiàn)序列化。

使用時將字節(jié)流反序列化為對象,應(yīng)用其創(chuàng)建的副本。

2.為什么網(wǎng)絡(luò)傳輸時對象要序列化,而字符串就不用序列化

網(wǎng)絡(luò)傳輸需要將對象轉(zhuǎn)換成字節(jié)流傳輸,序列化可以將一個對象轉(zhuǎn)化成一段字節(jié)編碼,以便在網(wǎng)絡(luò)上傳輸或者做存儲處理,使用時再進行反序列;

而字符串不用序列化的原因是字符串String是已經(jīng)實現(xiàn)了Serializable接口的,所以它已經(jīng)是序列化了的。

3.http請求中的JSON

網(wǎng)絡(luò)傳輸中使用字符串進行交互,JSON是一種特殊規(guī)范的字符串,有自己的格式規(guī)定,與String的顯示形式一樣,但本質(zhì)不是String!各端都支持JSON串的格式,將JSON容易轉(zhuǎn)化為String進行網(wǎng)絡(luò)傳輸。

fastJson是java用來實現(xiàn)序列化與反序列化的工具:

(1)PSOT請求參數(shù)為params時,對應(yīng)postman的調(diào)用形式是拼參數(shù)。

String response = RestHttpClient.httpPost(url, headerList, params);

其中參數(shù)params為Map。

(2)POST請求參數(shù)為Body時,參數(shù)為JSONString,即JSON樣子的String,postman調(diào)用時

如接口為

@RequestMapping(value = "toRefund", method =RequestMethod.POST)public ServerResult toRefund(@RequestBody final RefundRequestDto refundRequestDto)

程序調(diào)用時:

String response = RestHttpClient.httpPost(registerBasePath + refundSubmit, headers, JSON.toJSONString(refundRequestDto));

參數(shù)為JSONString,序列化為JSONString(即JSON形式的String,形式為JSON,本質(zhì)為String)。fastJson中JSON.toJSONString(對象)將對象轉(zhuǎn)為JSONString,進行網(wǎng)絡(luò)傳輸。

得到的response也為String,JSONString。

轉(zhuǎn)化為JSONObject(真正的JSON,比String增強了按key取值的功能),用

JSONObject object = JSON.parseObject(response);

JSON.parseObject(String)---->JSONObject,可以get值

object.getString("data")

String?data是返回對象中的一個成員。

若要從JSONString得到對象,若返回的對象為Person,將其轉(zhuǎn)化為JSONString的response回給調(diào)用方,調(diào)用方取得String的response后,還原為Person類

Person person = JSON.parseObject(response, Person.class);

還原時類Person中對應(yīng)的成員參數(shù)名要對應(yīng)一致。

4.上例中,Person對象序列化為JSONString時,成員變量要有對應(yīng)的set,get方法,因為fastJson利用反射機制,調(diào)用get方法取值,set賦值。沒有set無法序列化,沒有g(shù)et無法反序列化。

如Person類

classPerson {int age =10;

String name= "Kobe";public intgetAge() {returnage;

}public void setAge(intage) {this.age =age;

}//public String getName() {//return name;//}//

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

}

Person person = newPerson();

String string=JSON.toJSONString(person);

System.out.println("JSON.toJSONString(person) = " +string);

結(jié)果為:

JSON.toJSONString(person)= {"age":10}

name屬性無法序列化。

JSONObject jsonObject =JSON.parseObject(string);

System.out.println("JSON.parseObject(string) = " +jsonObject);

結(jié)果為:

JSON.parseObject(string)= {"age":10}

序列化確實,反序列化也無法取到值。

所謂序列化指對象------->JSONString,反序列化指JSONString------>JSONObject或?qū)ο蟆?/p>

總結(jié)

以上是生活随笔為你收集整理的java rest 序列化_http请求/restful/序列化反序列化/JSON的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。