[Android]【安卓】Json数据的快速拼装和解析

本篇博客已收录到我的安卓开发小结中——点击【安卓开发小结】

参考资料:介绍 Json

一、什么是Json数据
  • JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。
    JSON建构于两种结构:
    a、“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
    b、值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
1、结构a——对象
  • 对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
2、结构b——数组
  • 数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
3、详解
  • 值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、null、对象(object)或者数组(array)。这些结构可以嵌套。
  • 字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。 字符串(string)与C或者Java的字符串非常相似。

    quotation mark:引号
    reverse solidus:反斜线
    solidus:斜线
    backspace:退格
    formfeed:换页
    newline:换行
    carriage return:回车
    horizontal tab:制表符
    4 hexadecimal digits:4个16进制数
    以上字符加了一个反斜杠后,表示冒号后的意思。
  • 数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。
二、如何快速拼装Json数据

假设我们的目标数据为:

{"limit": 3,"offset": 0,"query": {"_id": {"$in": ["轮播位id1", "轮播位id2", "轮播位id3"]}}
}
  • 大的{}是一个Json对象,所以我们创建一个json对象,limit和offset是属于json对象的最简单的键值对,所以直接用json.put()方法添加就好,query这个key对应着{},说明后面是一个对象,所以我们创建一个Json子对象subJson1,id这个key对应的也是{},也是一个对象,所以再创建一个子对象subJson2,$in对应的是[],是一个json数组,所以我们创建一个jsonArray 对象,然后将数据添加到jsonArray 数组里,接着将jsonArray 添加到subJson2里,接着将subJson2添加到subJson1里,最后将subJson1添加到json里。
                JSONObject json = new JSONObject();JSONObject subJson1 = new JSONObject();JSONObject subJson2 = new JSONObject();JSONArray jsonArray = new JSONArray();json.put("limit",carrouselIdList.size());json.put("offset",0);for(int i=0;i<carrouselIdList.size();i++){jsonArray.put(i,carrouselIdList.get(i));}subJson2.put("$in",jsonArray);subJson1.put("_id",subJson2);json.put("query",subJson1);String data = json.toString();
三、如何快速解析Json数据
1、添加gson库依赖(需要的可以留言)


build.gradle

dependencies {compile fileTree(include: ['*.jar'], dir: 'libs')
}
2、写一个Json类
public abstract class Json {private static Json json;Json() {}public static Json get() {if (json == null) {json = new GsonImplHelp();}return json;}public abstract String toJson(Object src);public abstract <T> T toObject(String json, Class<T> claxx);public abstract <T> T toObject(byte[] bytes, Class<T> claxx);public abstract <T> List<T> toList(String json, Class<T> claxx);}
3、写一个GsonImplHelp类
public class GsonImplHelp extends Json {private Gson gson = new Gson();@Overridepublic String toJson(Object src) {return gson.toJson(src);}@Overridepublic <T> T toObject(String json, Class<T> claxx) {return gson.fromJson(json, claxx);}@Overridepublic <T> T toObject(byte[] bytes, Class<T> claxx) {return gson.fromJson(new String(bytes), claxx);}@Overridepublic <T> List<T> toList(String json, Class<T> claxx) {Type type = new TypeToken<ArrayList<T>>() {}.getType();List<T> list = gson.fromJson(json, type);return list;}
}
4、使用插件快速生成解析实体Bean类
  • 不知道的朋友查看我这篇博客:[Android]【安卓】使用插件快速生成JSon解析类
5、在请求回调中这么处理,就可以得到想要的数据
DataParseBean bean = GsonImplHelp.get().toObject(result, DataParseBean.class);

[Android]【安卓】Json数据的快速拼装和解析相关推荐

  1. Android开发--Json数据的解析

    在执行解析数据之前,需要将一个类库应用到你的程序中,下载的地址是: http://code.google.com/p/google-gson/ 下载解压之后你需要将蓝色标记的文件放入到你的程序之中应用 ...

  2. android 读取json数据(遍历JSONObject和JSONArray)

    android 读取json数据(遍历JSONObject和JSONArray) public String getJson(){ String jsonString = "{\" ...

  3. android libbfaac.so,Android中Json数据读取与创建

    一:  Json的特性和在数据交互中的地位就不用说了,直接看案例. 首先在android studio中创建assets文件目录,用于存放Json数据文件,android studio 1.3 默认项 ...

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

    http://www.cnblogs.com/xiaoluo501395377/p/3446605.html Android系列---JSON数据解析 转载于:https://www.cnblogs. ...

  5. android打印json对象,android之json数据过长打印不全问题的解决

    在logcat中打后台打印json数据时,json数据太过于长就会有打印不全的问题,这里记录一个办法就是分段打印: // 采用分段打印 四千字符分一段 if (response.length() &g ...

  6. Android基础——JSON数据的全方位解析

    Android基础--JSON数据的全方位解析 本篇文章包括以下内容: JSON是什么 JSONObject的解析和存储 JSONObject的解析和存储(抽象) JSONArray的解析和存储 模拟 ...

  7. Android中Json数据解析

    Android学习系列(20)--App数据格式之解析Json (很基本基础的入门,对json的基础讲的很好) http://my.eoe.cn/874311/archive/1936.html An ...

  8. android json.out,Android 之 json数据的解析(jsonReader)

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

  9. Android 实现Json数据解析,并进行应用

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 从网站上 ...

最新文章

  1. 使用深度神经网络进行自动呼叫评分(二)
  2. Linux下安装搜狗拼音
  3. 【leetcode】Word Break(python)
  4. Delphi DLL制作和加载 Static, Dynamic, Delayed 以及 Shared-Memory Manager
  5. DHCP服务开启了,为什么老是网络冲突
  6. 男人最佳的生育年限,程序员们,看看吧!!!
  7. Apache+Mysql+php+ZenTaoPMS安装配置文档
  8. oracle分布式事物锁,ORA-02049:超时:分布式事务处理等待锁诊断-Oracle
  9. 【毕业答辩】毕业论文答辩有技巧!
  10. 【转】js字符串转换成数字
  11. Django 查询表的几种方式
  12. ERROR: libass not found using pkg-config2
  13. 解决Deepin开机锁屏状态下能够使用触控板而解锁之后无法使用触控板的BUG
  14. 类型数组HTML5 中的新数组
  15. 转录组分析_转录组分析的正确姿势
  16. ctfshow SSRF web351-web360 wp
  17. csdn上怎样可以获得金币?
  18. 计算机网络基础中国石油大学,2017中国石油大学继续教育计算机网络基础答案...
  19. 我的老师,“身怀绝技”!
  20. 狂降1000!苹果最悲情产品大降价!

热门文章

  1. OLED电视不仅存在烧屏问题,还面临着新技术的赶超
  2. 小白免费编程学习网站
  3. Android 免密支付+Keystore体系
  4. 纸质文件从PDF转化为word 教程
  5. 带RC负载的单相全波桥式整流器研究(Matlab代码实现)
  6. Python 实现VRay Bitmap的旋转和重复偏移
  7. 电商中抢购与秒杀—大规模并发
  8. 博联魔法家 FastCon蓝牙建博会耀眼出圈
  9. 道路最短路径问题、道路最优路径问题解决方案
  10. 无人机地面站定制开发流程分享