[Android]【安卓】Json数据的快速拼装和解析
[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数据的快速拼装和解析相关推荐
- Android开发--Json数据的解析
在执行解析数据之前,需要将一个类库应用到你的程序中,下载的地址是: http://code.google.com/p/google-gson/ 下载解压之后你需要将蓝色标记的文件放入到你的程序之中应用 ...
- android 读取json数据(遍历JSONObject和JSONArray)
android 读取json数据(遍历JSONObject和JSONArray) public String getJson(){ String jsonString = "{\" ...
- android libbfaac.so,Android中Json数据读取与创建
一: Json的特性和在数据交互中的地位就不用说了,直接看案例. 首先在android studio中创建assets文件目录,用于存放Json数据文件,android studio 1.3 默认项 ...
- Android系列---JSON数据解析
http://www.cnblogs.com/xiaoluo501395377/p/3446605.html Android系列---JSON数据解析 转载于:https://www.cnblogs. ...
- android打印json对象,android之json数据过长打印不全问题的解决
在logcat中打后台打印json数据时,json数据太过于长就会有打印不全的问题,这里记录一个办法就是分段打印: // 采用分段打印 四千字符分一段 if (response.length() &g ...
- Android基础——JSON数据的全方位解析
Android基础--JSON数据的全方位解析 本篇文章包括以下内容: JSON是什么 JSONObject的解析和存储 JSONObject的解析和存储(抽象) JSONArray的解析和存储 模拟 ...
- Android中Json数据解析
Android学习系列(20)--App数据格式之解析Json (很基本基础的入门,对json的基础讲的很好) http://my.eoe.cn/874311/archive/1936.html An ...
- android json.out,Android 之 json数据的解析(jsonReader)
json数据的解析相对而言,还是比较容易的,实现的代码也十分简单.这里用的是jsonReade方法来进行json数据解析. 1.在解析之前,大家需要知道什么是json数据. json数据存储的对象是无 ...
- Android 实现Json数据解析,并进行应用
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 从网站上 ...
最新文章
- 使用深度神经网络进行自动呼叫评分(二)
- Linux下安装搜狗拼音
- 【leetcode】Word Break(python)
- Delphi DLL制作和加载 Static, Dynamic, Delayed 以及 Shared-Memory Manager
- DHCP服务开启了,为什么老是网络冲突
- 男人最佳的生育年限,程序员们,看看吧!!!
- Apache+Mysql+php+ZenTaoPMS安装配置文档
- oracle分布式事物锁,ORA-02049:超时:分布式事务处理等待锁诊断-Oracle
- 【毕业答辩】毕业论文答辩有技巧!
- 【转】js字符串转换成数字
- Django 查询表的几种方式
- ERROR: libass not found using pkg-config2
- 解决Deepin开机锁屏状态下能够使用触控板而解锁之后无法使用触控板的BUG
- 类型数组HTML5 中的新数组
- 转录组分析_转录组分析的正确姿势
- ctfshow SSRF web351-web360 wp
- csdn上怎样可以获得金币?
- 计算机网络基础中国石油大学,2017中国石油大学继续教育计算机网络基础答案...
- 我的老师,“身怀绝技”!
- 狂降1000!苹果最悲情产品大降价!