博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android基础 和服务器交互你必须知道的json处理
阅读量:7073 次
发布时间:2019-06-28

本文共 2615 字,大约阅读时间需要 8 分钟。

做客户端开发要经常的和服务端进行交互,现在基本上都是使用json进行交互的,所以对于json的生成和解析变得尤为重要,下面对自己日常工作中使用json的进行一个记录如下,以便一些刚学习的小伙伴参考和自己以后翻阅。

一、首先我们需要先添加fastjson的依赖:

compile 'com.alibaba:fastjson:1.2.24'复制代码

二、使用fastjson来"制造"json请求数据

我们在日常和服务器交互的时候,经常是通过json字符串进行的,首先就先演示下如何造出下面的json字符串:

{  "cmd":"myApp/app/userCenter/queryFriend",  "userToken":"bfcb38b5bcbf463af031a1e7b9d284af",  "parameters":  {    "friend":"myGirlFriends"  }}复制代码

初步通过下面的代码实现:

//parametersMap用来生成parametersMap
parametersMap = new HashMap<>();parametersMap.put("friend", "myGirlFriends");//upMap用来生成最终的上传数据Map
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字符串进行的,请看下面代码:

//JSON包名为:import com.alibaba.fastjson.JSON;String upParams = JSON.JSON.toJSONString(upMap);复制代码

这个时候upParams的结构就是我们想要的结构了

{    "cmd": "myApp/app/userCenter/queryFriend",    "userToken": "fc8b87f32bbdd8200de192350fd133cc",    "parameters": {        "friend": "myGirlFriends"     }}复制代码

upParams可以用来发送请求了。通过上面的例子,基本可以满足和服务器交互的请求格式,格式复杂点话,可能会有多层嵌套,只用使用Map来制造嵌套,最后使用fastjson进行转换就好了。

三、解析json字符串相关的操作

比如现在有一个json字符串需要我们解析,如下:

{    "name": "sean",    "id": "1",    "joined": [        {            "joinName": "joined1",            "joinId": "10"        },        {            "joinName": "joined2",            "joinId": "11"        },        {            "joinName": "joined3",            "joinId": "12"        }    ]}复制代码

获得这个json对象 只需要一行代码即可完成:

//string:json字符串//jsonObject:生成的json对象JSONObject jsonObject = JSON.parseObject(string);复制代码

1. 获取json对象中的一个元素的值:

string name = jsonObject.getString("name");Log.d("name=  "+name);复制代码

得到的值为name= sean

2. 获取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复制代码

以上是个人总结,有什么不对的地方欢迎指出、交流。

你可以通过以下方式关注我:

转载地址:http://flkml.baihongyu.com/

你可能感兴趣的文章
samba部署和优化
查看>>
libsuperuser简介
查看>>
Python自动化开发学习-爬虫2
查看>>
Scribe配置文件解析
查看>>
HISTFILESIZE与HISTSIZE的区别
查看>>
Parallels Desktop 8 虚拟机安装 windows 教程
查看>>
51cto博客第一篇
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
使用DataWorks来调度AnalyticDB任务
查看>>
CSV文件读取,解决汉字乱码
查看>>
Squid代理服务基础篇
查看>>
C语言中堆内存、栈内存、静态数据存储区的理解
查看>>
StringBuffer 用法
查看>>
创建控件全过程
查看>>
predis连接redis sentinel和redis cluster
查看>>
我的友情链接
查看>>
rhel 6.5 x86_64 配置centos yum源
查看>>
redis 的setnx命令
查看>>
在VMware Workstation上安装Kali Linux
查看>>