導航:首頁 > 編程語言 > gsonjava對象

gsonjava對象

發布時間:2022-06-27 15:25:20

Ⅰ json格式的字元串轉換為java對象

  1. 先來解釋反斜杠幹嘛用的:

    你既然提到了是json字元串,對,請注意字元串三個字。什麼是字元串?兩個引號之間的就是一個字元串比如:"abcdefg"這就是字元串.

    假如我有個json對象:

    {

    "message" : "success"

    }

    那麼問題來了,怎麼把它放到一個String字元串對象里呢?

    那麼我們都會這么做:

Stringjson="{"message":"success"}";

對吧?但是這么做對嗎?前面說過了,字元串是引號開始,引號結尾的,再看一眼這么做對嗎?

StringjsonStr="{"message":"success"}";
Infoinfo=JSON.parseObject(jsonStr,Info.class);
System.out.println(info.getMessage());

這里的fastjson只是處理json的框架中的一個,此外還有jackson、Gson等等,可以根據自己的需求選擇一個就可以了。

Ⅱ java gson怎麼判斷是數組還是對象

判斷是否是數組

1

Array.isArray(arrayInstance);

判斷是否是對象

1

Object.prototype.toString.call(objectInstance) === '[object object]'

Ⅲ 怎樣把JSON對象快速的轉成java對象

推薦用google的gson庫

example

json:

{"x":2333,"y":3444}

java code:

classVector{
doublex,y;
publicVector(double_x,double_y){
x=_x;
y=_y;
}

@Override
publicStringtoString(){
return"("+x+","+y+")";
}
}

deserialization code:

Stringjson=...;
Gsongson=newGsonBuilder().create();//創建一個gson對象
Vectorres=gson.fromJson(json,Vector.class);
System.out.println(res);
>(2333,3444)

Gson是一個很強大的json庫。除了直接對對象進行序列化和反序列化以外,你也可以通過它的stream API進行更高速的讀寫,通過自定義TypeAdapter指定序列化的格式等。


更多的參考: https://sites.google.com/site/gson/gson-user-guide

Ⅳ java怎麼使用gson解析json字元串

Gson是谷歌推出的解析json數據以及將對象轉換成json數據的一個開源框架. 現在json因其易讀性和高效率而被廣泛的使用著.

相對於java以及其它json的解析框架,Gson非常的好用.

簡單來講就是根據json的數據結構定義出相應的javabean --->"new"出Gson的實例gson---->gson.fromJson(jsonString,JavaBean.class) 即可.

下面給出一個實例來說明.



步驟1:目標:將從webservice傳回的json



{
"status":0,
"result":{
"location":{
"lng":103.98964143811,
"lat":30.586643130352
},
"formatted_address":"四川省成都市雙流縣北一街154",
"business":"簇橋,金花橋",
"addressComponent":{
"city":"成都市",
"district":"雙流縣",
"province":"四川省",
"street":"北一街",
"street_number":"154"
},
"cityCode":75
}
}


先普及下json數據格式定義: json數據只有兩種格式.

一種是對象: 一個大括弧包裹的內容就是一個對象.裡面是無數個逗號相間隔的鍵值對

{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}

一種是數組:一個方括弧包裹的內容就是一個數組,裡面是無數個逗號相間隔的json對象

如:

{
"people":[
{
"firstName":"Brett",
"lastName":"McLaughlin",
"email":"aaaa"
},
{
"firstName":"Jason",
"lastName":"Hunter",
"email":"bbbb"
},
{
"firstName":"Elliotte",
"lastName":"Harold",
"email":"cccc"
}
]
}



步驟2 定義json數據格式對應的javaBean


publicclassResult{
privateIntegerstatus;
privateResultDetailresult;
publicResult(){
}
publicResult(Integerstatus,ResultDetailresult){
super();
this.status=status;
this.result=result;
}
publicResultDetailgetResult(){
returnthis.result;
}
publicIntegergetStatus(){
returnthis.status;
}
publicvoidsetResult(ResultDetailresult){
this.result=result;
}
publicvoidsetStatus(Integerstatus){
this.status=status;
}
@Override
publicStringtoString(){
return"Result[status="+this.status+",result="+this.result
+"]";
}
}
publicclassResultDetail{
Locationlocation;
Stringformatted_address;
;
Stringbusiness;
StringcityCode;
publicResultDetail(){
super();
//TODOAuto-generatedconstructorstub
}
publicResultDetail(Locationlocation,Stringformatted_address,
,Stringbusiness,StringcityCode){
super();
this.location=location;
this.formatted_address=formatted_address;
this.addressComponent=addressComponent;
this.business=business;
this.cityCode=cityCode;
}
(){
returnthis.addressComponent;
}
publicStringgetBusiness(){
returnthis.business;
}
publicStringgetCityCode(){
returnthis.cityCode;
}
publicStringgetFormatted_address(){
returnthis.formatted_address;
}
publicLocationgetLocation(){
returnthis.location;
}
publicvoidsetAddressComponent(){
this.addressComponent=addressComponent;
}
publicvoidsetBusiness(Stringbusiness){
this.business=business;
}
publicvoidsetCityCode(StringcityCode){
this.cityCode=cityCode;
}
publicvoidsetFormatted_address(Stringformatted_address){
this.formatted_address=formatted_address;
}
publicvoidsetLocation(Locationlocation){
this.location=location;
}
}
publicclassLocation{
Stringlng;
Stringlat;
publicLocation(){
}
publicLocation(Stringlng,Stringlat){
this.lng=lng;
this.lat=lat;
}
publicStringgetLat(){
returnthis.lat;
}
publicStringgetLng(){
returnthis.lng;
}
publicvoidsetLat(Stringlat){
this.lat=lat;
}
publicvoidsetLng(Stringlng){
this.lng=lng;
}
@Override
publicStringtoString(){
return"Location[lng="+this.lng+",lat="+this.lat+"]";
}
}
publicclassAddressComponent{
Stringcity;
Stringdistrict;
Stringprovince;
Stringstreet;
Stringstreet_number;
publicAddressComponent(){
super();
//TODOAuto-generatedconstructorstub
}
publicAddressComponent(Stringcity,Stringdistrict,Stringprovince,
Stringstreet,Stringstreet_number){
super();
this.city=city;
this.district=district;
this.province=province;
this.street=street;
this.street_number=street_number;
}
publicStringgetCity(){
returnthis.city;
}
publicStringgetDistrict(){
returnthis.district;
}
publicStringgetProvince(){
returnthis.province;
}
publicStringgetStreet(){
returnthis.street;
}
publicStringgetStreet_number(){
returnthis.street_number;
}
publicvoidsetCity(Stringcity){
this.city=city;
}
publicvoidsetDistrict(Stringdistrict){
this.district=district;
}
publicvoidsetProvince(Stringprovince){
this.province=province;
}
publicvoidsetStreet(Stringstreet){
this.street=street;
}
publicvoidsetStreet_number(Stringstreet_number){
this.street_number=street_number;
}
@Override
publicStringtoString(){
return"AddressComponent[city="+this.city+",district="
+this.district+",province="+this.province+",street="
+this.street+",street_number="+this.street_number+"]";
}
}



測試:

jsonString ( 目標json數據,已經在最上面寫好的)


System.out.println("jsonString:"+jsonString);
Gsongson=newGson();
ResultfromJson=gson.fromJson(jsonString.toString(),Result.class);
System.out.println("******************************************");
System.out.println(fromJson);


結果:

jsonString:{"status":0,"result":{"location":{"lng":103.98964143811,"lat":30.586643130352},"formatted_address":"四川省成都市雙流縣北一街154","business":"簇橋,金花橋","addressComponent":{"city":"成都市","district":"雙流縣","province":"四川省","street":"北一街","street_number":"154"},"cityCode":75}}
*******************************************
Result[status=0,result=ResultDetail[location=Location[lng=103.98964143811,lat=30.586643130352],formatted_address=四川省成都市雙流縣北一街154,addressComponent=AddressComponent[city=成都市,district=雙流縣,province=四川省,street=北一街,street_number=154],business=簇橋,金花橋,cityCode=75]]


可見,jsonString已經成功的被轉換成了對應的javaBean



步驟3 : 總結.說明


Gson可以很輕松的實現javaBean和jsonString之間的互轉.只需要明白json如何定義.剩下的就非常簡單了.

Ⅳ java gson為什麼有的對象不能序列化

您好,提問者: 如果想要一個對象序列化,必須實現序列化介面 、 只有支持 java.io.Serializable 或 java.io.Externalizable 介面的對象才能從流讀齲

Ⅵ json數組轉java對象怎麼轉

有兩種方法實現:
(1)直接轉換:
創建JSONArray對象、JSONObject對象,通過put方法將其數據以鍵值對的形式填充,如例:
//假如有一個Java實體類Person,包括以下屬性:phone、sex、married、address。
ArrayList<Person> persons = new ArrayList<Person>();
for (int i = 0; i < 3; i++) {
persons.add(new Person("138******67", "女", true, "北京朝陽區"));//填充Java實體類集合
}
JSONArray array = new JSONArray();// Json格式的數組形式
JSONObject obj;//json格式的單個對象形式
for (int i = 0; i < persons.size(); i++) {
obj = new JSONObject();
//依次填充每一個Java實體對象
try {
obj.put("phone", persons.get(i).getPhone());//json通過put方式以key-value形式填充
obj.put("sex", persons.get(i).getSex());
obj.put("married", persons.get(i).getMarried());
obj.put("address", persons.get(i).getAddress());
array.put(obj);//將JSONObject添加入JSONArray
} catch (JSONException e) {
e.printStackTrace();
}
}
(2)通過GSON工具實現:
只需要創建GSON對象,通過toJson方法轉換即可。如例:
//模擬Java數據
Person person = new Person("敏敏", 23, "女", "北京市海淀區");
//創建GSON對象
Gson gson = new Gson();
//調用toJson方法即可轉換為字元串的json格式
String json = gson.toJson(person);

Ⅶ 如何用gson存儲一個java對象,然後取出來的

new Gson().toJson(Object);

Ⅷ 如何使用Gson解析json數據至多個java bean對象

多個類,也就是數組嘛,你可以用
List<News> aa; 這樣定義即可,數組就用List並指定你的泛型

Ⅸ Gson 在java 如何使用啊

google的gson,心想google的應該不會差,帶著一些好奇心,我開始使用了gson。
經過比較,gson和其他現有java json類庫最大的不同時gson需要序列化得實體類不需要使用annotation來標識需要序列化得欄位,同時gson又可以通過使用annotation來靈活配置需要序列化的欄位。
這里提供gson-2.2.4.jar的下載(密碼:4Sk4)
下面是一個簡單的例子:
//一個 Person 實體
public class Person {

private String name;
private int age;

//以下是get,set方法
public String getName() {
return name;
}

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

public int getAge() {
return age;
}

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

實體很簡單,兩個欄位,當然實體中的欄位也可以是List或者Set類型的。
Gson gson = new Gson();
List<Person> persons = new ArrayList<Person>();
for (int i = 0; i < 10; i++) {
Person p = new Person();
p.setName("name" + i);
p.setAge(i * 5);
persons.add(p);
}
String str = gson.toJson(persons);

上面的代碼重點是Gson對象,它提供了toJason()方法將對象轉換成Json字元串,上面代碼的str對象值為:
[
{"name":"name0","age":0},
{"name":"name1","age":5},
{"name":"name2","age":10},
{"name":"name3","age":15},
{"name":"name4","age":20},
{"name":"name5","age":25},
{"name":"name6","age":30},
{"name":"name7","age":35},
{"name":"name8","age":40},
{"name":"name9","age":45}
]

很標準的json數據,很簡單吧,呵呵。
下面來看看gson的反序列化,Gson提供了fromJson()方法來實現從Json相關對象到java實體的方法。
在日常應用中,我們一般都會碰到兩種情況,轉成單一實體對象和轉換成對象列表或者其他結構。
先來看第一種:
比如json字元串為:[{"name":"name0","age":0}]
Person person = gson.fromJson(str, Person.class);

提供兩個參數,分別是json字元串以及需要轉換對象的類型。

Ⅹ java 新建的web sever中的gson怎麼來的

是google對json的封裝 在小文件處理上效能很高 如果是大文件處理最好考慮 Jackson 求采

閱讀全文

與gsonjava對象相關的資料

熱點內容
livecn伺服器地址 瀏覽:255
程序員這個工作真的很吃香嗎 瀏覽:842
程序員和數學分析師待遇 瀏覽:676
壓縮氣彈簧怎麼拆 瀏覽:319
華為公有雲伺服器添加虛擬ip 瀏覽:207
程序員和運營哪個累 瀏覽:22
抖音安卓信息提示音怎麼設置 瀏覽:452
光速虛擬機的共享文件夾 瀏覽:245
程序員培訓機構發的朋友圈真實性 瀏覽:742
天乾地支簡單演算法 瀏覽:299
下載個壓縮文件 瀏覽:298
普通人電腦關機vs程序員關機 瀏覽:628
米酷建站源碼 瀏覽:115
氫氣app怎麼搜搭配 瀏覽:619
pdf綠盟 瀏覽:505
固態硬碟編譯器重建 瀏覽:391
怎樣編輯硬碟文件夾 瀏覽:660
安卓系統如何打開電腦軟體 瀏覽:572
android監聽事件處理 瀏覽:750
h3c伺服器怎麼看功率 瀏覽:122