做客戶端開發要經常的和服務端進行交互,現在基本上都是使用json
進行交互的,所以對于json
的生成和解析變得尤為重要,下面對自己日常工作中使用json
的進行一個記錄如下,以便一些剛學習的小伙伴參考和自己以后翻閱。
fastjson
的依賴:fastjson
來”制造”json
請求數據我們在日常和服務器交互的時候,經常是通過json
字符串進行的,首先就先演示下如何造出下面的json
字符串:
初步通過下面的代碼實現:
//parametersMap用來生成parametersMap<String, String> parametersMap = new HashMap<>();parametersMap.put("friend", "myGirlFriends");//upMap用來生成最終的上傳數據Map<String, Object> upMap = new HashMap<>();upMap.put("cmd", "myApp/app/userCenter/queryFriend");upMap.put("userToken", "fc8b87f32bbdd8200de192350fd133cc");upMap.put("parameters", parametersMap);這個時候的數據是這樣的:
{ cmd=myApp/app/userCenter/queryFriend, userToken=fc8b87f32bbdd8200de192350fd133cc, parameters={ friend=myGirlFriends }}上面只是生成了一組map
對象,我們和服務器交互是通過json
字符串進行的,請看下面代碼:
這個時候upParams
的結構就是我們想要的結構了
upParams
可以用來發送請求了。通過上面的例子,基本可以滿足和服務器交互的請求格式,格式復雜點話,可能會有多層嵌套,只用使用Map來制造嵌套,最后使用fastjson
進行轉換就好了。
json
字符串相關的操作比如現在有一個json
字符串需要我們解析,如下:
獲得這個json對象 只需要一行代碼即可完成:
//string:json字符串//jsonObject:生成的json對象JSONObject jsonObject = JSON.parSEObject(string);json
對象中的一個元素的值:得到的值為name= sean
json
對象中的一個數組一行代碼:
//jsonObject:json對象//joined:json對象中的一個字段,里面保存的是一個json數組。JSONArray joinedArray = jsonObject .getJSONArray("joined");此時,joinedArray 中的值為: [ { "joinName": "joined1", "joinId": "10" }, { "joinName": "joined2", "joinId": "11" }, { "joinName": "joined3", "joinId": "12" }]遍歷該數組:
for (int i = 0; i < joinedArray.size(); i++) { JSONObject obj = joinedArray.getJSONObject(i); Log.d("id= "+obj.getJoinId); Log.d("name= "+obj.getJoinName);}此時打印數據:
id= 10name= joined1id= 11name= joined2id= 12name= joined3以上是個人總結,有什么不對的地方歡迎指出、交流。
新聞熱點
疑難解答