[转]Android解析json数据
1、json格式
{"students":[{"sid":1001,"name":"zhangsan","addr":"Yichang","pic":"111.jpg"}, {"sid":1002,"name":"Jack","addr":"Beijing","pic":"222.jpg"}]}
{[{"sid":1001,"name":"zhangsan","addr":"Yichang","pic":"111.jpg"}, {"sid":1002,"name":"Jack","addr":"Beijing","pic":"222.jpg"}]}
Student stu = new Student(1005,"张三","Wuhan","zs.jpg");
JSONObject jsonObject = new JSONObject(stu);
JSONObject jsonObject = new JSONObject(str);
Iterator<String> iterator = jsonObject.keys();
Student stu = new Student();
while(iterator.hasNext()){
//可以利用java反射,写泛型方法
String key = iterator.next();
if(key.equals("sid")){
stu.setSid(jsonObject.getInt(key));
}
if(key.equals("name")){
stu.setName(jsonObject.getString(key));
}
if(key.equals("sid")){
stu.setAddr(jsonObject.getString(key));
}
if(key.equals("sid")){
stu.setPic(jsonObject.getString(key));
}
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("zs", stu);
同样jsonObject.toString()就是字符串输出 {"zs":"{sid:1005, name:张三, addr:Wuhan, pic:zs.jpg}"}。要注意,如果Student没有覆写toString()方法,输入的是:{"zs":"org.itair.domain.Student@2666e815"}
Student s1 = new Student(1001,"zhangsan","yichang","111");
Student s2 = new Student(1002,"Jack","Beijing","222");
List<Student> stus = new ArrayList<Student>();
stus.add(s1);
stus.add(s2);
JSONArray array = new JSONArray(stus);
array的字符串是:[{"sid":1001,"name":"zhangsan","addr":"yichang","pic":"111"},{"sid":1002,"name":"Jack","addr":"Beijing","pic":"222"}]
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject2 = jsonArray.getJSONObject(i);
//解析成特定的对象操作,new对象,从jsonObject2取出值来装进去
Iterator<String> iterator = jsonObject2.keys();
while (iterator.hasNext()) {
String key = iterator.next();
Object value = jsonObject2.get(key);
map.put(key, value);
}
}
Student s2 = new Student(1002,"Jack","Beijing","222");
List<Student> stus = new ArrayList<Student>();
stus.add(s1);
stus.add(s2);
JSONObject jsonObject = new JSONObject();
jsonObject.put("students", stus);
jsonObject的字符串:{"students":[{"sid":1001,"name":"zhangsan","addr":"yichang","pic":"111"},{"sid":1002,"name":"Jack","addr":"Beijing","pic":"222"}]}
JSONArray jsonArray = jsonObject.getJSONArray("key");//key就是上面放入的students
在Android的项目中,一般不会把Json字符串解析成对象的集合,而多是解析成List<Map<String,Object>>
List<Map<String,Object>> list = new ArrayList<Map<String ,Object>>();
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject2 = jsonArray.getJSONObject(i);
Map<String ,Object> map = new HashMap<String, Object>();
Iterator<String> iterator = jsonObject2.keys();
while (iterator.hasNext()) {
String key = iterator.next();
Object value = jsonObject2.get(key);
map.put(key, value);
}
list.add(map);
}
要解析成对象集合,还是用Gson, fastjson比较方便。
[转]Android解析json数据的更多相关文章
- Android解析Json数据之Gson解析
Gson是谷歌官方提供的解析json数据的工具类.json数据的解析能够使用JSONObject和JSONArray配合使用解析数据,可是这样的原始的方法对于小数据的解析还是有作用的,可是陪到了复杂数 ...
- Android解析json数据
Json数据 [{"code":"110000","sheng":"11","di":"0 ...
- android基础---->JSON数据的解析
上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...
- Android中使用Gson解析JSON数据的两种方法
Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下 Json是一种类似于XML的通用数据交换格式,具有比XML更高的 ...
- Android系列---JSON数据解析
您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...
- Android 之 json数据的解析(jsonReader)
json数据的解析相对而言,还是比较容易的,实现的代码也十分简单.这里用的是jsonReade方法来进行json数据解析. 1.在解析之前,大家需要知道什么是json数据. json数据存储的对象是无 ...
- Android网络之数据解析----使用Google Gson解析Json数据
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Android的JSON数据解析
一. 使用原生方式解析 准备工作:准备一个布局文件,用来显示元数据与转换之后的数据 <?xml version="1.0" encoding="utf-8" ...
- Android 之JSON数据解析
(以下基本都是郭霖大神<第一行代码>中的知识) JSON数据与xml相比,优势在于体积更小,传输所需的流量少.但是缺点也很明显,就是语义性较差. 下面是一组JSON格式的数据. [{&qu ...
随机推荐
- Petya and Origami
Petya is having a party soon, and he has decided to invite his nn friends. He wants to make invitati ...
- Python入门字符编码
计算机基础知识 一.应用程序任何操作硬件的请求都需要向操作系统发起系统调用,然后由操作系统去操作硬件 二.文本编辑器存取文件的原理 1.打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编 ...
- 关于django的模板层
你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python代码之中. def current_datetime(request): now = datet ...
- rsync常见故障
1.1 rsync客户端执行rsync命令错误: 客户端的错误现象: [root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41: ...
- 检测客户pc电脑端VC++环境并安装
CefSharp 是一个非常不错的cef封装.但它依赖于VC++环境. 具体如下: Branch CEF Version VC++ Version .Net Version Status master ...
- sofa-boot(1)helloworld项目
本示例参考:https://www.sofastack.tech/sofa-boot/docs/QuickStart 示例采用sofa-boot 3.1.1版本. 如下步骤: 1.进入https:// ...
- /var 目录下文件系统
/var :日志文件/var/log:各种系统日志存放地*/var/log/message :系统信息默认日志文件 (非常重要)按周自动轮循/var/log/secure :记录登入系统信息文 ...
- thinkPHP5.0验证码不显示
1.使用composer安装时,验证码无法正常显示 主要是因为验证码扩展库的版本安装不正常,官方的5.0版本的扩展库版本号都是1.*,默认安装的是2.0版本,2.0版本均为ThinkPHP5.1版本专 ...
- Angular JS ng-repeat 报错 Error: [ngRepeat:dupes]
ng-repeat常用情况: <div class="form-group" ng-repeat="item in items"></div& ...
- mapreduce求平均数
1. 现有某电商关于商品点击情况的数据文件,表名为goods_click,包含两个字段(商品分类,商品点击次数),分隔符“ ”,由于数据很大,所以为了方便统计我们只截取它的一部分数据,内容如下 ...