JSON資料造假和解析

2021-09-22 11:16:22 字數 2199 閱讀 7621

客戶端開發通常要從伺服器獲取資料,所以就需要呼叫後台的介面,然後獲得後台返回的資料,根據這些資料的格式進行json解析。

由於後台返回的資料會有不同的格式,所以前端也要採取不同的json.parse()方法進行解析。

首先,來講一下json資料。

簡單的json資料就像下面這種,我們稱之為名稱/鍵對:

我們在客戶端解析的時候可以新建乙個如下的乙個物件類:

public class usermodel 

public void

setname(string name)

public string getpassword()

public void

setpassword(string password)

}

然後把獲取到的資料data進行資料解析,方法如下(其中user是usermodel的乙個物件):

user = json.parseobject(data, usermodel.class);

解析出來後我們就可以在相應的activity或fragement介面對這個user進行使用,通過user.get()方法把從後台獲取到的name和password值賦值給我們想要顯示的地方。就比如我們寫了乙個textview用來顯示name,只需要

textview tvname = (textview)findviewbyid(r.id.***);

tvname.settext(model.getname());

除了上面這種簡單的傳遞物件的json格式,我們也經常會遇到傳遞陣列的情況,這種情況比傳遞名稱/鍵對相對來說複雜一點,類似於下面這樣:

,

]}

這其實就是乙個list的陣列,所以我們像下面這種方式對這個陣列進行json解析(其中list是lis的乙個物件):

list = json.parseobject(data, new typereference>() );

**中的typereference可以用來應對複雜的泛型,通過解析我們可以把這個list以及其中的資料放到我們想要設定的地方。這些都是相對比較簡單的資料,所以來說一下陣列和名稱/鍵值結合一塊用的,示例的返回資料如下:

}]

}

對於這樣的一串資料,首先我們要看最外層的是陣列型別還是名稱/鍵值物件,由於上面的資料最外層是由"[ ]"括起來的,所以user_hobby很明顯是乙個陣列,然後在這個陣列裡面有三個字段:name、password、hobby,在hobby裡面最外層又是由""組成的,因此hobby是乙個名稱/鍵對。我們可以有里及外的剖析:

首先可以新建乙個hobbymodel物件類,其中新增id和hobbyname這兩個欄位和他們的set/get方法,這個就不說了,和上面的usermodel類似,然後我們可以再新建乙個aboutmemodel物件類,不同的是我們的字段有了一些變化,主要**如下:

private string name

;private string password

;

private listlist

;

同樣的,我們可以用下面這條語句取到我們想要的值:

list = json.parseobject(data, new typereference>() );

那麼如何拿到這些資料呢?陣列的話我們可以用for迴圈,比如我們要取到「sherry」這條資料,就可以用for迴圈,也就是list.get(0).getname(),而如果要取到hobbyname,也就是list.get(0).gethobby().get(0).gethobbyname()。

不過由於我們是要調後台介面的,所以有時候後台傳送的資料不符合我們的要求,為了避免這個問題,我們可以自己製造json假資料。首先我們假設我們希望後台傳給我們的資料是上面那一條,我們可以把從後台獲取的data重新賦值,**如下:

string data = "}]}"

;

在上面的**中有很多「\",這是因為我們的資料中有一些資料是string型別的,需要有""包裹,而單獨使用「」會引起報錯,所以需要「\"進行轉義,\」也就是我們string語句中的「。

以上就是我關於json解析的一些小見解,有不對的地方歡迎指正。

list = json.parseobject(data, new typereference>() );

Json資料封裝和解析

新增dll引用 右鍵專案 新增引用 net 選擇 c program files x86 reference assemblies microsoft framework v3.0 system.runtime.serialization.dll c program files x86 refere...

IOS轉換和解析JSON資料

在ios開發中常用到使用json資料向伺服器傳送請求和接收資料,本例使用ios5自帶解析類nsjsonserialization方法解析,無需匯入包,ios5支援,但是低版本ios不支援。1.首先建立資料模型 mydata.h import import srtcjsonobject.h inte ...

C 使用Json封裝資料和解析資料

編譯出來的庫名 json vc71 libmtd.lib debug json vc71 libmt.lib release 需要包含的標頭檔案 jsoncpp src 對應原始碼 include json 該目錄下所有檔案 呼叫庫方式 include json json.h ifdef debug...