1、json格式

2、json解析
3、gson解析
4、fastjson解析
一、Json格式
json一种轻量级的数据交换格式。在网络上传输交换数据一般用xml, json。
两种结构:
1)对象(key-value集合)
 {"id":"1001","name":"zhangshan","address":"shanghai"}
2)数组(数组对象),以[  ] 包括的key-value对象

{"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"}]}

 
二、json数据生成,解析
JSONObject,代表了一个JSON对象,可以完成Java对象与JSON字符串之间的相互转换。
JSONArray,代表一个JSON数组,可以完成Java集合(集合元素可以是对象)与JSON字符串之间的转换。
 
1、Java对象与JSON字符串相互转换
方式一:

Student stu = new Student(1005,"张三","Wuhan","zs.jpg");

JSONObject jsonObject = new JSONObject(stu);

 
                  jsonObject.toString()就是字符串输出: {"sid":1005,"name":"张三","addr":"Wuhan","pic":"zs.jpg"}
 
解析为对象:

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));

}

}

 
方式二:
                           Student stu = new Student(1005, "张三", "Wuhan", "zs.jpg");

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"}

2、集合与JSON字符串相互转换
方式一、
转换:

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"}]

 
解析:
                           JSONArray jsonArray = new JSONArray("要解析的json字符串");
 

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 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);

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"}]}

 
解析:
       由于上面的转换方式是把集合对象放到 JSONObject中。
       
  JSONObject jsonObject = new JSONObject("要解析的json字符串");

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比较方便。

三、Gson
toJson(Object)  把对象转为json字符串
fromJson(String, Object)   把json字符串转为对象

[转]Android解析json数据的更多相关文章

  1. Android解析Json数据之Gson解析

    Gson是谷歌官方提供的解析json数据的工具类.json数据的解析能够使用JSONObject和JSONArray配合使用解析数据,可是这样的原始的方法对于小数据的解析还是有作用的,可是陪到了复杂数 ...

  2. Android解析json数据

    Json数据 [{"code":"110000","sheng":"11","di":"0 ...

  3. android基础---->JSON数据的解析

    上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...

  4. Android中使用Gson解析JSON数据的两种方法

    Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下   Json是一种类似于XML的通用数据交换格式,具有比XML更高的 ...

  5. Android系列---JSON数据解析

    您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...

  6. Android 之 json数据的解析(jsonReader)

    json数据的解析相对而言,还是比较容易的,实现的代码也十分简单.这里用的是jsonReade方法来进行json数据解析. 1.在解析之前,大家需要知道什么是json数据. json数据存储的对象是无 ...

  7. Android网络之数据解析----使用Google Gson解析Json数据

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  8. Android的JSON数据解析

    一. 使用原生方式解析 准备工作:准备一个布局文件,用来显示元数据与转换之后的数据 <?xml version="1.0" encoding="utf-8" ...

  9. Android 之JSON数据解析

    (以下基本都是郭霖大神<第一行代码>中的知识) JSON数据与xml相比,优势在于体积更小,传输所需的流量少.但是缺点也很明显,就是语义性较差. 下面是一组JSON格式的数据. [{&qu ...

随机推荐

  1. git学习--更新本地仓库单独文件

    命令: git checkout origin/dev .gitignore 从远端 dev 仓库,更新本地签出分支的 .gitignore 文件

  2. Newtonsoft.Json 自定义序列化格式转化器

    public static class JsonHelper { static JsonHelper() { Newtonsoft.Json.JsonSerializerSettings settin ...

  3. redis备份恢复

    redis的几种数据导入导出方式[转]   环境说明:202.102.221.11 redis源实例202.102.221.12 redis目标实例202.102.221.13 任意linux系统 一 ...

  4. ubuntu同时装有MXNet和Caffe框架

    我阐述一下我遇到的问题:因为之前装过caffe,最近装了MXNet.MXNet可以运行,但import caffe就不行了,找不到模块. 那应该怎么处理呢??? 参考了一下这个网站:https://i ...

  5. Nuxt 2.3.X 配置babel

    1. 在package.json中修改运行脚本 添加--exec babel-node 添加之后的效果为:(修改了8/10行) { "name": "nuxt-learn ...

  6. 电量分析工具 Battery Historian 的配置及使用

    1.Building from source code(通过各种配置后从源码构建) 官方流程看似很麻烦,但一上手,很快就搞定,让我情何以堪. ps:以下均是参考官方及网友做的 copy https:/ ...

  7. vue proxyTable 接口跨域请求调试(五)

    在不同域之间访问是比较常见,在本地调试访问远程服务器....这就是有域问题. VUE解决通过proxyTable: 在 config/index.js 配置文件中 dev: { env: requir ...

  8. python get_dummies与cut离散化数据

  9. Redis Intro - Dict

    https://segmentfault.com/a/1190000004850844

  10. jemeter接口测试基础

    前言: 本文主要针对http接口进行测试,使用Jmeter工具实现. Jmter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较成熟,因此,本次直接使用Jmeter工具来完成对 ...