【Android开发经验】Json数据格式介绍、使用Android自带类库完成Json生成与解析

本文介绍了JSON数据格式的结构特点,包括键值对和数组形式,并展示了Android自带的org.json包中JSONObject、JSONArray、JSONStringer和JSONTokener的使用方法,强调了Android内置JSON库的限制及其在解析和生成Json时的不足,建议开发者寻找更高效的选择。
摘要由CSDN通过智能技术生成

因为在之前的项目中,xml和json数据格式都有使用过,所以对json格式的简单、高效的特点印象深刻。如果使用json语言进行开发,强烈推荐使用json数据格式!

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。  JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。


    JSON建构于两种结构:
    (1)“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
    (2)值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
    

    因为这种数据结构在大部分现代计算机语言都以某种形式存在。所以使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。比如给android和ios写api接口的时候,采用json格式就可以实现跨平台支持。


    1.键值对形式:

    这种方式我们可以对应java里的map结构。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

    下面是一个键值对形式的简单示例:

    {
        "name": "zhao",
        "age": 22,
        "address": "QingDao"
    }

    前面的键是String字符串,但是后面的值却可以是多种类型,比如字符串、bool、数值、null、对象甚至是数组。

    下面是一个值是对象的简单示例:

{
    "name": "zhao",
    "age": 22,
    "address": "QingDao",
    "birthday": {
        "year": 19,
        "month": 1,
        "day": 19
    }
}

    我们可以使用下面的图表示这种形式



    2.数组形式

    数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

    对应于java里面的类,我们可以认为这是一个可以放object的数组,值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。

    下面是一个使用数组形式的示例:

[
    "zhaokaiqiang",
    22,
    "QingDao",
    {
        "year": 1992,
        "month": 1,
        "day": 19
    },
    true,
    null
]

    我们可以使用下面的这个图表示这种形式



    value的取值可以使用下面的图片表示



    如果在字符串里面有需要转义的字符的话,可以参考下面的关于转义的说明



    Json数据格式就这么点东西,非常的简单明了。Android里面自带的org.json包里面的类,可以生成Json格式的数据或者是对Json格式的数据进行解析。

    下面简单的介绍一下Android里面的json相关类的使用,但是强烈不推荐大家使用android自带的json相关类!

    和json相关的类就下面5个,下面分别介绍这几个类的用法



1.JSONObject

    这个类主要对json键值对形式的数据操作进行了封装,下面是常用的几个方法:

JSONObject.put(key,values);//添加,用于生成json

JSONObject.get(key);//获取,用于解析json

JSONObject.optXXX(key);//也是用于获取,在解析的时候会用到,但是不会抛出异常,而是返回默认的值

    如果我们要生成键值对形式的字符串,那么可以使用这个类,就像下面的代码

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值