JSON解析的几种方式

简介: JSON解析的几种方式

JSON是首先一种数据结构,说白了就是对数据的描述,刚刚出现是为了取代XML,可惜并没有,但是在作为配置文件上,却是很好,由于它小巧灵活,描述数据很好,所以在网络上进行数据传输更加方便。


请记住JSON对数据的描述形式,既然是形式,那么它的数据形式是什么样的:


对象的描述是: {} 这个表示jsonobject(json对象)

数组的描述是: [] 表示jsonarray(json数组)

属性或值的描述是: “”

连接之间的描述是: :


 在开发中,网络请求和json解析使用的频率是一样高的,因为网络请求返回来的一般都是json(当然还有xml),这里讨论的是json,网络请求的工具类前面我的博客已经写过了,这里给出网址:http://blog.csdn.net/u014727709/article/details/53389840 直接复制就可使用。


 解析json的方法有很多,我最开始接触的时候使用的是原生解析,第二种就是Gson解析,还有阿里巴巴的FastJson,JackJson等,这里看一下如何进行json解析,这里使用的网络请求就是上面提到的工具类。


解析这个网址返回的json:http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&page=1&limit=20 这是一个get请求

格式是这样的:

{
“ret”: 1,
“data”: [
{
“id”: “8289”,
“title”: “油焖大虾”,
“pic”: “http://www.qubaobei.com/ios/cf/uploadfile/132/9/8289.jpg”,
“collect_num”: “1596”,
“food_str”: “大虾 葱 生姜 植物油 料酒”,
“num”: 1596
},


。。。

第一种方法:原生解析

 首先要分析json的格式,这里首先是一个json对象(即JsonObject),里面还嵌套有一个json数组(即JsonArray),jsonarray里面又是一个json对象。分析清楚那就可以进行解析了,当然最好的话,还是要建立一个json所对应的实体类bean,这里我就不写了,下面会在提到的。


这里的result就是网络请求返回来的json字符串。

           JSONObject jsonObject = new JSONObject(result);
                    JSONArray jsonArray = jsonObject.getJSONArray("data");
                    for (int j = 0; j < jsonArray.length(); j++) {
                        JSONObject jsonObject2 = jsonArray.getJSONObject(j);
                        String id = jsonObject2.getString("id");
                        String title = jsonObject2.getString("title");
                        String pic = jsonObject2.getString("pic");
                        String collect_num = jsonObject2.getString("collect_num");
                        String food_str = jsonObject2.getString("food_str");
                        String num = jsonObject2.getString("num");
                        Log.e("json------->", id+","+title+","+pic+","+collect_num+","+food_str+","+num);

这里是输出的结果:

aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTYxMjIxMTExMzQ4NjQy.png


注意:解析json的时候,最使用json里面对应的数据类型进行解析,这里我统一使用的是String类型来获得解析的结果。例如:json里面最后一个num的类型是int,解析的时候可以int num = jsonObject2.getInt(“num”);


 解析出来的结果你可以存放在你建立的实体类bean里面,或者存在集合List< HashMap< String, Object>>里面也可以,但是一般的话,都是存放在实体类里面的。


第二种解析方式:Gson解析

 Gson解析需要下载gson.jar包,自己去百度下载吧或者下载我的demo里面就有。


 这里解析就需要给json生成实体类,初学的话建议手写,熟悉的话可以使用Android Studio里面插件GsonFormat来自动生成,这里实体类我就不贴出来了,去我的demo里面看吧。


解析就是一句话的事:

 MenuBean menuBean = new Gson().fromJson(result, MenuBean.class);
                Log.e("MenuBean----->", menuBean.getRet()+"");

结果如下:

aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTYxMjIxMTEzNDU5NjA0.png


第三种解析方式:FastJson和Gson类似的,就不贴图了。

                MenuBean menuBean =  JSON.parseObject(result,MenuBean.class);
                Log.e("MenuBean----->", menuBean.getRet()+"");
                Log.e("MenuBean----->", menuBean.getData().get(0).getPic()+"");


第四种解析方式:JackJson解析,同样和上面类似

          MenuBean menuBean;
          menuBean = new ObjectMapper().readValue(result, MenuBean.class);
                    Log.e("MenuBean----->", menuBean.getRet()+"");
                    Log.e("MenuBean----->", menuBean.getData().get(0).getPic()+"");


demo下载地址:http://download.csdn.net/detail/u014727709/9717408



欢迎start,欢迎评论,欢迎指正

相关文章
|
24天前
|
JSON 前端开发 Java
Json格式数据解析
Json格式数据解析
|
2天前
|
JSON 安全 Swift
【Swift开发专栏】Swift中的JSON解析与处理
【4月更文挑战第30天】本文介绍了Swift中的JSON解析与处理。首先,讲解了JSON的基础,包括其键值对格式和在Swift中的解析与序列化方法。接着,展示了如何使用`Codable`协议简化JSON操作,以及处理复杂结构的示例。通过这些内容,读者能掌握在Swift中高效地处理JSON数据的方法。
|
3天前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之在DataWorks中,使用JSON解析函数将MySQL表中的字段解析成多个字段将这些字段写入到ODPS(MaxCompute)中如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
11 3
|
10天前
|
JSON 前端开发 Java
SpringBoot之JSON参数,路径参数的详细解析
SpringBoot之JSON参数,路径参数的详细解析
13 0
|
20天前
|
存储 JSON JavaScript
「Python系列」Python JSON数据解析
在Python中解析JSON数据通常使用`json`模块。`json`模块提供了将JSON格式的数据转换为Python对象(如列表、字典等)以及将Python对象转换为JSON格式的数据的方法。
33 0
|
23天前
|
存储 JSON 数据格式
python读取同路径下的json文件,并解析
使用Python的`json`模块读取和解析JSON文件,首先导入json模块,再用`open()`结合`json.load()`读取文件内容到`data`。通过字典和列表语法访问JSON数据,如`data[&#39;name&#39;]`获取名字,`data[&#39;items&#39;]`获取列表,可循环遍历列表元素。
11 0
|
1月前
|
存储 JSON JavaScript
【嵌入式开源库】cJSON的使用,高效精简的json解析库
【嵌入式开源库】cJSON的使用,高效精简的json解析库
|
2月前
|
存储 JSON Apache
揭秘 Variant 数据类型:灵活应对半结构化数据,JSON查询提速超 8 倍,存储空间节省 65%
在最新发布的阿里云数据库 SelectDB 的内核 Apache Doris 2.1 新版本中,我们引入了全新的数据类型 Variant,对半结构化数据分析能力进行了全面增强。无需提前在表结构中定义具体的列,彻底改变了 Doris 过去基于 String、JSONB 等行存类型的存储和查询方式。
揭秘 Variant 数据类型:灵活应对半结构化数据,JSON查询提速超 8 倍,存储空间节省 65%
|
3月前
|
XML 机器学习/深度学习 JSON
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
30 0
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
|
2天前
|
JSON 数据格式 Python
Python标准库中包含了json模块,可以帮助你轻松处理JSON数据
【4月更文挑战第30天】Python的json模块简化了JSON数据与Python对象之间的转换。使用`json.dumps()`可将字典转为JSON字符串,如`{&quot;name&quot;: &quot;John&quot;, &quot;age&quot;: 30, &quot;city&quot;: &quot;New York&quot;}`,而`json.loads()`则能将JSON字符串转回字典。通过`json.load()`从文件读取JSON数据,`json.dump()`则用于将数据写入文件。
8 1

推荐镜像

更多