android JSON解析

原创 2013年12月05日 11:17:12

     

JSON的定义:

一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。 – Json.org

JSON Vs XML

1.JSON和XML的数据可读性基本相同

2.JSON和XML同样拥有丰富的解析手段

3.JSON相对于XML来讲,数据的体积小

4.JSON与JavaScript的交互更加方便

5.JSON对数据的描述性比XML较差

6.JSON的速度要远远快于XML
android的json解析部分都在包org.json下,主要有以下几个类:

JSONObject:可以看作是一个json对象,这是系统中有关JSON定义的基本单元,其包含一对儿(Key/Value)数值。它对外部(External:应用toString()方法输出的数值)调用的响应体现为一个标准的字符串(例如:{"JSON": "Hello, World"},最外被大括号包裹,其中的KeyValue被冒号":"分隔)。其对于内部(Internal)行为的操作格式略微,例如:初始化一个JSONObject实例,引用内部的put()方法添加数值:new JSONObject().put("JSON", "Hello, World!"),在KeyValue之间是以逗号","分隔。Value的类型包括:BooleanJSONArrayJSONObjectNumberString或者默认值JSONObject.NULL object 。

JSONStringer:json文本构建类 ,根据官方的解释,这个类可以帮助快速和便捷的创建JSON text。其最大的优点在于可以减少由于格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntax rules)创建JSON text。每个JSONStringer实体只能对应创建一个JSON text。。其最大的优点在于可以减少由于格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntax rules)创建JSON text。每个JSONStringer实体只能对应创建一个JSON text。

JSONArray它代表一组有序的数值。将其转换为String输出(toString)所表现的形式是用方括号包裹,数值以逗号”,”分隔(例如:[value1,value2,value3],大家可以亲自利用简短的代码更加直观的了解其格式)。这个类的内部同样具有查询行为, get()和opt()两种方法都可以通过index索引返回指定的数值,put()方法用来添加或者替换数值。同样这个类的value类型可以包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object。

  1. //假设现在要创建这样一个json文本
  2. //{
  3. //"phone" : ["12345678", "87654321"], // 数组
  4. //"name" : "yuanzhifei89", // 字符串
  5. //"age" : 100, // 数值
  6. //"address" : { "country" : "china", "province" : "jiangsu" }, // 对象
  7. //"married" : false // 布尔值
  8. //}
  9. try{
  10. //首先最外层是{},是创建一个对象
  11. JSONObjectperson = newJSONObject();
  12. //第一个键phone的值是数组,所以需要创建数组对象
  13. JSONArrayphone = newJSONArray();
  14. phone.put("12345678").put("87654321");
  15. person.put("phone",phone);
  16. person.put("name","yuanzhifei89");
  17. person.put("age",100);
  18. //键address的值是对象,所以又要创建一个对象
  19. JSONObjectaddress = newJSONObject();
  20. address.put("country","china");
  21. address.put("province","jiangsu");
  22. person.put("address",address);
  23. person.put("married",false);
  24. }catch(JSONException ex) {
  25. //键为null或使用json不支持的数字格式(NaN, infinities)
  26. thrownewRuntimeException(ex);
      




// 普通Json数据解析

58 privatevoid parseJson(String strResult) {
59 try{
60 JSONObject jsonObj = newJSONObject(strResult).getJSONObject("singer");
61 intid = jsonObj.getInt("id");
62 String name = jsonObj.getString("name");
63 String gender = jsonObj.getString("gender");
64 tvJson.setText("ID号"+id + ", 姓名:" + name + ",性别:"+ gender);
65 }catch(JSONException e) {
66 System.out.println("Json parse error");
67 e.printStackTrace();
70 //解析多个数据的Json
71 privatevoid parseJsonMulti(String strResult) {
72 try{
73 JSONArray jsonObjs = newJSONObject(strResult).getJSONArray("singers");
74 String s = "";
75 for(inti = 0; i < jsonObjs.length() ; i++){
76 JSONObject jsonObj = ((JSONObject)jsonObjs.opt(i))
77 .getJSONObject("singer");
78 intid = jsonObj.getInt("id");
79 String name = jsonObj.getString("name");
80 String gender = jsonObj.getString("gender");
81 s += "ID号"+id + ", 姓名:" + name + ",性别:"+ gender+ "\n";
82 }
83 tvJson.setText(s);
84 }catch(JSONException e) {
85 System.out.println("Jsons parse error !");
86 e.printStackTrace(); 
版权声明:本文为博主原创文章,未经博主允许不得转载。

安卓解析 json 4种格式 全解析

 总共4种json 1   //最简单 的 直接一个对象   btn2=(Button)findViewById(R.id.button2);   btn2.setOnClic...
  • mfc2003
  • mfc2003
  • 2014年08月15日 14:43
  • 100376

android json 解析简单实例

public class JsonActivity extends Activity { private TextView tvJson; private Button ...
  • aikongmeng
  • aikongmeng
  • 2013年12月20日 18:47
  • 6570

android解析多层json经验

多层嵌套时,只需要解析多层嵌套次数-1,解析完成后可直接取出数据。 相同数据需要使用for循环。 JSONArray是数组,JSONObject是单条数据。...
  • wl724120268
  • wl724120268
  • 2016年10月09日 10:31
  • 1162

Android 较复杂JSON的解析过程

因为它一层套一层,并且出现了JSONArray里面的子JSONObject又嵌套了JSONArray的情况,那么接下来别虚,跟随我的脚步一起来征服它,彻底的理解原生解析过程。...
  • u012874222
  • u012874222
  • 2015年12月22日 01:54
  • 1330

android json解析详解(json手动解析)

一 .json简介 1)概念:json全称是javaScript object Notation,是一种病轻量级的数据交换格式。 2)特点: 1.本质就是具有特定格式的字符串 2,.json完...
  • wk_beicai
  • wk_beicai
  • 2017年11月13日 08:43
  • 217

Android之Json解析方式和解析框架

1      JSON解析 1.1    JSON的概念 Ø  JSON(JavaScript Object Natation) Ø  是一种轻量级的数据交换格式 Ø  是基于纯文本的数据格式...
  • JourneyX
  • JourneyX
  • 2016年10月30日 10:06
  • 4987

Android高性能JSON数据解析

Android高性能JSON数据解析 原文链接 : Hi Performance JSON Parsing in Android 原文作者 : DONN FELKER 译文出自 : ...
  • Mr_dsw
  • Mr_dsw
  • 2016年01月20日 10:23
  • 1413

Android项目之JSON解析(3种解析技术详解)

前言: 在我写博客前再声明一下,我希望转载我文章的某某某记得注明:(本文来自http://blog.csdn.net/qq_29269233),要尊重我的劳动成果,这样才能给我更多的支持和鼓励!差不多...
  • qq_29269233
  • qq_29269233
  • 2016年11月26日 16:35
  • 1950

Android之JSON格式数据解析

JSON:JavaScript 对象表示法(JavaScript Object Notation)。独立于语言和平台,比 XML 更小、更快,更易解析。如今JSON数据已经成为了互联网中大多数数据的传...
  • HanTangSongMing
  • HanTangSongMing
  • 2015年01月01日 12:45
  • 60944

[Android开发] Json解析工具类,一个类搞定Json的解析

一、简介利用递归的方式反射解析到bean里面二、详细代码1、 Json格式例如服务器指定规定json格式为:{ "code": "……" , // 返回代号,预留字段,默认返回nul...
  • niubitianping
  • niubitianping
  • 2016年11月10日 17:30
  • 3786
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android JSON解析
举报原因:
原因补充:

(最多只允许输入30个字)