對Json與BaseBean的一些理解

2021-08-03 10:00:58 字數 2432 閱讀 7247

眾所周知json是常用的網路通訊的資料格式,json在google的flatbuffers出來之前,json幾乎是大家通用的資料傳輸格式。沒有對比就沒有傷害,相對於flatbuffers幾乎**的解析速度來說,json在大量資料傳輸的時候確實有一定的劣勢,但是json相對於flatbuffer的可讀性上確實是要更高一些。

既然json是客戶端於服務端互動的語法,它也有他自己的一些語法規則(大家可以參考但是為了開發的方便和避免一些沒必要的坑,在這裡,我貼上我在專案開發中的常用的語法格式:

1.外層json

這裡用到的status用於返回狀態嗎,message用於返回狀態描述,這樣可以方便客戶端檢視到請求失敗的具體原因,便於解決問題。data這是用於放置本次請求具體的資料返回。

2.data的內容

data的裡面的內容我遇到過的主要分為三種情況。

情況一 data中為字串:

情況二 data中為物件:

}
情況二 data中為陣列:

,] }
現在對於json的使用還有乙個方便的地方就是可以用於解析的工具眾多,例如google的gson,它可以根據json自動動態的生成對應的物件。因此當我們拿到json之後,就可以直接轉化為乙個bean物件。那我們應該如果來寫這個bean物件呢?

首先,你可以想到的方法是寫一段下面這樣的**:

.....

private

int status;

public

void

setstatus(int status)

public

intgetstatus()

根據乙個程式設計師固有的思維,上面既然都有外層json了,我不用每個bean都自己寫吧,我是不是只需要乙個basebean,具體的bean在繼承這個basebean就可以了。basebean**如下:

public

class basebean

public

void

setstatus(int status)

public string getmessage()

public

void

setmessage(string message)

}

這裡為什麼沒有把data寫到basebean中呢,因為具體的json還可能會根據具體的業務返回不同的結構,所以data的型別也變化的。那怎麼解決呢,首先我想到的辦法就是對data的型別做乙個限制。要求data中返回的資料型別必須是乙個物件,這樣不就可以把data寫到basebean中了嗎。這樣就要求後端返回的json資料必須是下面這樣的格式:

看到這裡,可能有人要問,為什麼我一定要寫乙個basebean呢?這麼麻煩,還得和後台確定格式(以前確定這個格式的時候還和後台指手畫腳過幾次)。這樣做的好處在於可以統一的根據json返回做不同的處理。例如status為0時,我可以統一的顯示載入錯誤的介面,統一的顯示處理dialog彈窗等。

考慮到basebean對後台還是有一定的格式要求,這樣的設計終究不是十分完美。在加上實際開發中有時候還會出現這樣的情況:

json 1:

}json 2:

} }

在這種情況下,如果按照以前的思路就必須建立兩個bean來繼承basebean,而且每個bean都有name這樣的乙個屬性,這樣看來這裡也可以優化。前段時間看了xdroid的**,裡面大量用的泛型來做約束,這裡,我也用泛型對basebean做了部分修改,**如下:

public

class basebean

return bean;

}public

intgetstatus()

public

void

setstatus(int status)

public string getmessage()

public

void

setmessage(string message)

public t getdata()

public

void

setdata(t data)

}

具體使用方法如下:

basebean resultbean = new basebean();
如果有person這樣乙個物件,在構建的json物件的時候,可以這樣寫:

basebean> resultbean = new basebean();
這樣就能最大程度的簡化bean的**。

SpringMvc對JSON的處理與AJAX示例

測試自定義ajax json 中,可以使用 response body註解,快速生成 json資料 但需要jackson類庫支援。配置要求 context annotation config mvc annotation driven 載入轉換器,並 支援物件與json 間的資料轉換 生成json ...

對JSON的理解

json是一種結構化資料,它是一種資料格式 json可以概括為三種型別 簡單值 物件 陣列 注意 json不支援變數 函式和物件例項 包括字串 數值 布林值 和null json不支援js中的undefined 例如 5 json數值 hello json字串 json字串必需使用雙引號!布林值和n...

Json概述以及python對json的相關操作

對簡單資料型別的encoding 和 decoding 使用簡單的json.dumps方法對簡單資料型別進行編碼,例如 1 2 3 4 5 6 importjson obj 1,2,3 123,123.123,abc encodedjson json.dumps obj printrepr obj ...