JSON

网络下的数据传输之Json数据的解析

字号+ 作者:H5之家 来源:H5之家 2015-11-04 09:10 我要评论( )

网络下的数据传输之Json数据的解析 上篇文章中我们已经讲解了XML文件的解析与序列化,本篇文章我们接着上篇文章接着说另外一种数据传输格式——Json。 一、概述

网络下的数据传输之Json数据的解析

网络下的数据传输之Json数据的解析

上篇文章中我们已经讲解了XML文件的解析与序列化,本篇文章我们接着上篇文章接着说另外一种数据传输格式——Json。

一、概述

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式, 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

二、语法规则

(1)、JSON 语法是 JavaScript 对象表示语法的子集。

例如:
JSON 数据的书写格式是:名称/值对
名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:

"firstName":"John"

(2)、JSON 值可以是:

三、JSON的两种结构

JSON有两种表示结构,对象和数组。
(1)、对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码。

{ key1:value1, key2:value2, ... }

(2)、数组结构以”[”开始,”]”结束。中间由0或多个以”,”分隔的值列表组成,语法结构如代码。

[ { key1:value1, key2:value2 }, { key3:value3, key4:value4 } ]

下面我们开始学习Json数据的解析。首先我们下载gson.jar包,然后导入Android Studio中,注意,要在module的gradle文件中添加:

compile files('libs/gson-2.3.0.jar')

我们需要明白三个类:Gson、JsonObject、JsonArray。
(1)、Gson类:
Gson是一个工具类,需要使用gson.jar包,使用很简单,用于将Json字符串的转换。主要的两个方法:

  • toJson()
  • fromJson()
  • 例如:

    public static String ObjectToJson(Object object){ Gson gson = new Gson(); return gson.toJson(object); }

    通过这两个方法,可以将我们的对象实体转换成键值对的json字符串。
    (2)、JsonObject类:
    json对象,就是一个键对应一个值,使用的是大括号{ },如:{key:value}

    {"author":"何红辉、关爱民","name":"Android源码设计模式解析与实战","price":"79.0"}

    常用方法:
    (1)、构造方法:

  • public JSONObject(String json) throws JSONException:将json字符串转换成JSONObject对象
  • public JSONObject(Map copyFrom):由一个Map集合内容构成一个JSONObject对象。
  • (2)普通方法:

    例如:

    JSONObject jsonObject = new JSONObject(); jsonObject.put("author","何红辉、关爱民"); jsonObject.put("name","Android源码设计模式解析与实战"); jsonObject.put("price","79.0");

    (3)、JsonArray类:
    JsonObject数组,使用中括号[ ]包含。

    [{"author":"何红辉、关爱民","price":"79.0","name":"Android源码设计模式解析与实战"}]

    常用方法:
    (1)、构造方法:

    例如:

    JSONArray jsonArray = new JSONArray(); jsonArray.put(jsonObject); Log.d(TAG,jsonArray.toString());

    实例,大家可以自己写几个试试,我们现在写个小demo,随便看看

    JSONObject jsonObject = new JSONObject(); jsonObject.put("author","何红辉、关爱民"); jsonObject.put("name","Android源码设计模式解析与实战"); jsonObject.put("price","79.0"); JSONArray jsonArray = new JSONArray(); jsonArray.put(jsonObject); jsonArray.put(1314); jsonArray.put(true); Log.d(TAG,jsonArray.toString());

    输入结果:

    [{"author":"何红辉、关爱民","price":"79.0","name":"Android源码设计模式解析与实战"},1314,true]

    我们在看下面:

    JSONObject jsonObject = new JSONObject(); jsonObject.put("author","何红辉、关爱民"); jsonObject.put("name","Android源码设计模式解析与实战"); jsonObject.put("price","79.0"); JSONArray jsonArray = new JSONArray(); jsonArray.put(jsonObject); jsonArray.put(1314); jsonArray.put(true); jsonArray.put(1,"在1的位置添加"); Log.d(TAG,jsonArray.toString());

    看看输出结果:

    [{"author":"何红辉、关爱民","price":"79.0","name":"Android源码设计模式解析与实战"},"在1的位置添加",true]

    对比发现,会覆盖掉原来的值,这点大家注意点就可以了。至此,结合,基本的数据解析已经解析完毕,欢迎大家留言。

    作者:mr_dsw 欢迎转载,与人分享是进步的源泉!

    转载请保留地址:

    版权声明:转载注明出处,谢谢合作。

    推荐文章

    本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。

    Android实战简易教程-第六十九枪(自定义控件实现雪花飘落效果) - 2015-10-30 17:10:12

     

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

    相关文章
    • php CI 实战教程:[5]用curl获取json并解析

      php CI 实战教程:[5]用curl获取json并解析

      2016-02-26 17:00

    •  JSON入门级学习总结-JSON数据结构

      JSON入门级学习总结-JSON数据结构

      2016-02-25 11:05

    • Android解析Json速度最快的库:json

      Android解析Json速度最快的库:json

      2016-02-13 18:00

    • JavaScript转换与解析JSON方法实例详解第1/2页

      JavaScript转换与解析JSON方法实例详解第1/2页

      2016-02-10 21:25

    网友点评
    <