JSON

Android基础入门教程——7.2.2 Android JSON数据解析

字号+ 作者:H5之家 来源:H5之家 2017-10-19 09:21 我要评论( )

Android基础入门教程——7.2.2 Android JSON数据解析 标签(空格分隔): Android基础入门教程 本节引言: 相信大家肯定对JSON不陌生吧,我们和服务器交互一般用

Android基础入门教程——7.2.2 Android JSON数据解析

标签(空格分隔): Android基础入门教程

本节引言:

相信大家肯定对JSON不陌生吧,我们和服务器交互一般用得较多的数据传递方式都是Json字符串的形式,
保存对象,我们也可以写成一个Json字符串然后存储!解析Json不知道你用的是Gson,Fastjson,jackson
等,不过本节我们并不会去用这些第三方的解析库,而是使用Android自带的扣脚Json解析器来解析Json!
好的,开始本节内容!

1.Json概念以及与XML的比较

1)Json是什么?

答:JavaScript Object Natation, 一种轻量级的数据交换格式, 与XML一样,
广泛被采用的客户端和服务端交互的解决方案!具有良好的可读和便于快速编写的特性。

2)Json与XML的比较:

PS:上述来自于百度~简单点说Json的优点:体积小,节省流量,只是不如XML直观,可读性
稍微差一点而已!

3)Json的格式规范:

就像协议一样,肯定是有一套规范的,毕竟双方都是通过Json字符串来传递数据,语法规则如下:
数据在名称/值对中;数据由逗号分隔;花括号保存对象;方括号保存数组;
而Json数据的书写格式:名称/值对 比如: “person”:”coder-pig”
比如一个简单的Json字符串:

[ { "id":"1","name":"基神","age":"18" }, { "id":"2","name":"B神","age":"18" }, { "id":"3","name":"曹神","age":"18" } ]

我们除了解析Json还可以自己拼接Json,当然如果你自己拼了一个Json字符串又不知道对不对,
可以百度随便找一个校验工具,比如:
把Json字符串贴上去,校验下就好!

2.Android给我们提供的扣脚Json解析类

这些API都存在于org.json包下,而我们用到的类有下面这些:

3.代码示例:解析Json字符串:

PS:这里我们就不另外写servlet或者请求网站,直接把Json写到字符串中来解析,模拟下就算了!

1)简单的Json字符串解析示例:

我们解析的是上面这个简单的Json,首先我们来写一个POJO类:

Person.java:

{ private String id; private String name; private String age; (String id){ this.id = id; } public String getId(){ return this.id; } (String name){ this.name = name; } public String getName(){ return this.name; } (String age){ this.age = age; } public String getAge(){ return this.age; } @Override public String toString() { return this.name + "~年方:" + this.age; } }

写一个解析上述Json字符串的方法:

(String json){ persons = new ArrayList<Person>(); try{ JSONArray jsonArray = new JSONArray(json); for(int i = 0;i < jsonArray.length();i++){ JSONObject jsonObject = (JSONObject) jsonArray.get(i); Person person = new Person(); person.setId(i+""); person.setName(jsonObject.getString("name")); person.setAge(jsonObject.getString("age")); persons.add(person); } }catch (Exception e){e.printStackTrace();} }

运行效果图:

嘿嘿,很简单是吧,接下来我们找一个复杂点的!

2)复杂的Json字符串解析示例:

如果是这样的Json字符串呢?

呵呵,那就需要我们一步步来扣数据了:

解析代码如下:

private void parseDiffJson(String json) { try { JSONObject jsonObject1 = new JSONObject(json); Log.e("Json", json); JSONArray jsonArray = jsonObject1.getJSONArray("ch"); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject = (JSONObject) jsonArray.get(i); //取出name String sname = jsonObject.getString("names"); JSONArray jarray1 = jsonObject.getJSONArray("data"); JSONArray jarray2 = jsonObject.getJSONArray("times"); Log.e("Json", sname); Log.e("Json", jarray1.toString()); Log.e("Json", jarray2.toString()); } } catch (Exception e) { e.printStackTrace(); } }

看下打印的Log:

当然还有一层,有兴趣你就自己扣…

本节小结:

好的,使用Android给我们提供的扣脚Json解析类果然要慢慢扣,当然你也可以将解析的过程 反过来,自己拼接JSON,时间关系,这里就慢慢拼接了,哈哈,当然进阶部分我们 学习了第三方的一些Json解析库就轻松多了,~好的,本节就到这里,谢谢~

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Android开发中截取某一段json字符串

    Android开发中截取某一段json字符串

    2017-10-18 15:33

  • Android笔记(五十) Android中的JSON数据

    Android笔记(五十) Android中的JSON数据

    2017-10-16 17:00

  • Numpy 入门教程

    Numpy 入门教程

    2017-10-14 08:00

  • Springmvc下的jquery,ajax和json的等技术的运用

    Springmvc下的jquery,ajax和json的等技术的运用

    2017-10-07 16:00

网友点评