android json解析

fastjson生成和解析json数据,序列化和反序列化数据

廉价感情. 提交于 2019-12-01 19:01:24
本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>) 2.通过一个android程序测试fastjson的用法。 fastjson简介: Fastjson是一个Java语言编写的高性能功能完善的JSON库。fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocol buf。Fastjson完全支持 http://json.org 的标准,也是官方网站收录的参考实现之一。支持各种JDK类型。包括基本类型、JavaBean、Collection、Map、Enum、泛型等。支持JDK 5、JDK 6、Android、阿里云手机等环境。 一. fastjson生成json字符串(JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>) String jsonStrng = JSON.toJSONString(object); 二. fastjson 解析json字符串为四种类型 1. JavaBean Person person = JSON.parseObject

Android之JSON的三种解析方式

半城伤御伤魂 提交于 2019-11-30 15:16:22
一、什么是JSON? JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。 JSON就是一串字符串 只不过元素会使用特定的符号标注。 {} 双括号表示对象 [] 中括号表示数组 "" 双引号内是属性或值 : 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象) 所以 {"name": "Michael"} 可以理解为是一个包含name为Michael的对象 而[{"name": "Michael"},{"name": "Jerry"}]就表示包含两个对象的数组 当然了,你也可以使用{"name":["Michael","Jerry"]}来简化上面一部,这是一个拥有一个name数组的对象 二、JSON解析之传统的JSON解析 1、生成JSOn字符串 ? 1 2 3 4 5 public static String createJsonString(String key, Object value) { JSONObject jsonObject = new JSONObject(); jsonObject.put(key, value); return jsonObject.toString(); } 2、解析JSON字符串 分为以下三种情况,一个 Java Bean

【转】采用Gson解析含有多种JsonObject的复杂json

心已入冬 提交于 2019-11-30 13:39:18
本文对应的项目是 MultiTypeJsonParser ,项目地址 https://github.com/sososeen09/MultiTypeJsonParser 0 前奏 使用 Gson 去解析 json 应该是很常见的,大部分的情况下我们只要创建一个 Gson 对象,然后根据 json 和对应的 Java 类去解析就可以了。 Gson gson = new Gson(); Person person = gson.form(json,Person.class); 但是对于比较复杂的 json,比如下面这种, attributes 对应的 jsonObject 中的字段是完全不一样的,这个时候再简单的用上面的方法就解析不了了。 { "total": 2, "list": [ { "type": "address", "attributes": { "street": "NanJing Road", "city": "ShangHai", "country": "China" } }, { "type": "name", "attributes": { "first-name": "Su", "last-name": "Tu" } } ] } 当然了,我们说一步到位的方式解决不了,但用一点笨方法还是可以的。比如先手动解析拿到 attributes 对应的 jsonObject

除了FastJson,你还有选择: Gson简易指南

帅比萌擦擦* 提交于 2019-11-29 08:29:37
前言 这个周末被几个技术博主的同一篇公众号文章 fastjson又被发现漏洞,这次危害可导致服务瘫痪! 刷屏,离之前漏洞事件没多久,fastjson 又出现严重 Bug。目前项目中不少使用了 fastjson 做对象与JSON数据的转换,又需要更新版本重新部署,可以说是费时费力。与此同时,也带给我新的思考,面对大量功能强大的开源库,我们不能盲目地引入到项目之中,众多开源框架中某个不稳定因素就足以让一个项目遭受灭顶之灾。趁着周末,在家学习下同样具备JSON与对象转换功能的优秀开源框架 Gson,并且打算将今后项目使用 fastjson 的地方逐渐换成使用 Gson,记录下学习总结的内容,希望对小伙伴也有所帮助。 本文所涉及所有代码片段均在下面仓库中,感兴趣的小伙伴欢迎参考学习: https://github.com/wrcj12138aaa/gson-actions 版本支持: JDK 8 Gson 2.8.5 JUnit 5.5.1 Lomok 1.18.8 Gson 简介 在正式介绍 Gson 之前,我们可以先从 官方的wiki 看下 Gson 的描述,了解它是什么? Gson is a Java library that can be used to convert Java Objects into their JSON representation. It can also

网络数据交换格式

Deadly 提交于 2019-11-29 06:03:11
1.Json的讲解 1.1json是什么? •JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。 JSON采用兼容性很高的、完全独立于语言文本格式,同时也具备类似于C语言的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)体系的行为。这些特性使JSON成为理想的数据交换语言。 •本质就是具有特定格式的字符串 •JSON数据已经是客户端与服务器端交互的最常用的选择, 已经很少使用xml来进行数据交互了 1.2json的数据格式 •整体结构: •Json数组 : [ ] •Json对象: { } •Json数组的结构: [value1, value2, value3] •Json对象的结构: {key1:value1, key2:value2, key3:value3} •key的数据类型: 字符串 •value的数据类型: •数值 •字符串 •null •json数组 [] •json对象 {} •例子: [1, “ab”,[], {“n”:123, “b”:”abc”}] [1, “a”:3] {“name”:”TOM”, “age”:12} {“aa”:“a”, 3} 2.1json的解析 解析技术:

【JSON解析】JSON解析

非 Y 不嫁゛ 提交于 2019-11-28 21:20:54
前三篇博客分别介绍了xml的三种解析方法,分别是SAX,DOM,PULL解析XML,兴趣的朋友可以去看一下这 【XML解析(一)】SAX解析XML , 【XML解析(二)】DOM解析XML , 【XML解析(三)】PULL解析XML 三篇文章学习一下XML解析。我们知道客户端请求服务器,服务器给我们返回的数据通常不只是xml,还可以是json,html,当然json和xml是用的最多的了,下篇文章将会向大家解析如何解析html数据,这篇文章先向大家介绍如何解析服务器给我们返回的json数据。 一、概述  JSON是 JavaScript Object Notation 的简称,起源于js(javascript)它是一种轻量级的数据交换格式,JSON不仅在js中广泛使用,同时还在其他领域得到广泛使用,如c,c++,java,Php,swift等等,成为了一种通用的理想数据交换格式,它有两种数据结构,分别是对象,数组,它形式上有花括号{}和中括号[]嵌套,{}中的是代表对象,[]中的为数组,即对象中有数组,数组中又有对象,而且以及键/值对出现。 JSON语法:  json是javascript对象表示语法的子集 数据在键值对中 数据有逗号分隔 花括号保存对象 JSON的值: 数字(整数或浮点数) 字符串(在双引号中 逻辑值(true 或 false) 数组(在方括号中) 对象

一文了解Python常见的序列化操作

别来无恙 提交于 2019-11-28 17:24:58
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android、Python、Java和Go,这个也是我们团队的主要技术栈。 Github: https://github.com/hylinux1024 微信公众号:终身开发者(angrycode) 0x00 marshal marshal 使用的是与 Python 语言相关但与机器无关的二进制来读写 Python 对象的。这种二进制的格式也跟 Python 语言的版本相关, marshal 序列化的格式对不同的版本的 Python 是不兼容的。 marshal 一般用于 Python 内部对象的序列化。 一般地包括: 基本类型 booleans, integers,floating point numbers,complex numbers 序列集合类型 strings, bytes, bytearray, tuple, list, set, frozenset, dictionary code对象 code object 其它类型 None, Ellipsis, StopIteration marshal 的主要作用是对 Python “编译”的 .pyc 文件读写的支持。这也是 marshal 对 Python 版本不兼容的原因。开发者如果要使用 序列化/反序列化 ,那么应该使用

Java的Json解析包FastJson使用

五迷三道 提交于 2019-11-27 13:01:48
阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征: 速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson; 功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在Java SE 5.0以上版本;支持Android;开源 (Apache 2.0) 源码地址:https://github.com/alibaba/fastjson Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。 public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray *public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject * public static final T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean *public static

Android解析带转义符的JSON

流过昼夜 提交于 2019-11-26 23:40:34
最近几天写Android写的有点儿癫疯状态,下午在获取远程服务器的JSON字符串儿的时候遇到了个问题,就是从服务器返回的JSON带了转义符,也就是反斜杠,然后JSON就死活解析不了了,大致上返回来的是这个样子的: 然后再Android中就直接原封不动的赋值给了一个字符串儿变量,然后再用JSON解析的时候就错了,解析不了,因为反斜杠不光反了斜杠,还特别反人类。。。但是,如果把页面返回的结果整个儿拷贝出来,然后赋值给一个字符串儿变量,解析就是完全正常的,所以百思不得其解,群内一个兄弟说,你这么着吧,把反斜杠替换为空,然后掐头去尾干掉两头儿的引号,再重新赋值回去,应该就可以了。不过在此期间就是还犯了一个低级错误,就是直接在原先的字符串儿上操作了,这个错误实在低级到无法忍受了,因为这几天是python和java一块儿写,我还美滋滋的觉得我还能记得java的字符串儿不同于python是可以原地操作的,就这我还巴巴的美呢!!结果被这哥们儿给鄙视了一下,说你来个中间变量啊,于是问题圆满解决。 不过写博客不上代码也实在是无法忍受,代码简单,直接就来个简单的处理代码吧: 1 2 3 4 5 6 7 8 9 10 11 12 13 // 从服务器端获取Json字符串 String backlogJsonStr = HttpUtils.getByHttpClient(Backlog.this