据我了解,在多年以前浏览器客户端和服务器它们的通讯数据交互格式是XML, 使用XML来规定数据格式可读性确实非常强,XML的魅力确实很大,也很成熟,但是也有不足之处,就是在网络传输的时候对流量要求特别高,如果使用XML这种格式来传输数据,确实也是非常标准的,为什么慢慢的被JSON这种数据格式给代替了呢,JSON能够代替XML的,只有明显一点就是,传输数据的时候消耗的流量比XML要小,意思就是JSON这种数据格式体积小

相同的数据,分别使用 JSON / XML 对比就明白了:

XML:

<?xml version="1.0" encoding="utf-8" ?>
<country>
<name>中国</name>
<province>
<name>黑龙江</name>
<citys>
<city>哈尔滨</city>
<city>大庆</city>
</citys>   
</province>
<province>
<name>广东</name>
<citys>
<city>广州</city>
<city>深圳</city>
<city>珠海</city>
</citys>   
</province>
<province>
<name>台湾</name>
<citys>
 <city>台北</city>
 <city>高雄</city>
</citys> 
</province>
<province>
<name>新疆</name>
<citys>
<city>乌鲁木齐</city>
</citys>
</province>
</country>

JSON:

        {
name: "中国",
provinces: [
{ name: "黑龙江", citys: { city: ["哈尔滨", "大庆"]} },
{ name: "广东", citys: { city: ["广州", "深圳", "珠海"]} },
{ name: "台湾", citys: { city: ["台北", "高雄"]} },
{ name: "新疆", citys: { city: ["乌鲁木齐"]} }
]
}

XML在其他领域的重要性,无可替代

既然XML在无论数据传输方面慢慢的被JSON这种数据格式给取代,XML在其他领域还是有着相当重要的

很多很多的框架,各种各样的框架,无数的框架配置,或者布局,都是非XML莫属

就例如:Android的核心配置文件是什么:AndroidManifest.xml 是XML来配置的

就例如:Android的布局文件是 xxx.xml


XML数据格式的阅读性比JSON好

JSON数据格式在网络传输方面比XML要好


JSON的数据格式(对象):

1.简单的JSON对象数据格式:

{
"name":"刘俊俊",
"age":44,
"sex":"男"
}

2.简单的JSON对象数据里面 有 集合:

{
"name":"刘俊俊",
"age":44,
"sex":"男",
"grades":[
{
"grade":"43"
},
{
"grade":"44"
},
{
"grade":"88"
},
{
"grade":"76"
}
]
}

3.简单的JSON对象数据里面 有两个集合:

{
"name":"刘俊俊",
"age":44,
"sex":"男",
"grades":[
{
"grade":"43"
},
{
"grade":"44"
},
{
"grade":"88"
},
{
"grade":"76"
}
],
"bodys":[
{
"body":"130"
},
{
"body":"140"
},
{
"body":"143"
},
{
"body":"128"
}
]
}

4.简单的JSON对象数据里面 有一个集合,在嵌套一个集合:

{
"name":"刘俊俊",
"age":44,
"sex":"男",
"grades":[
{
"grade":"43",
"levels":[
{
"level1":4
},
{
"level2":76
},
{
"level3":23
},
{
"level4":34
},
{
"level5":65
}
]
}
]
}

5.简单的JSON对象数据里面 有一个集合,在嵌套两个集合:

{
"name":"刘俊俊",
"age":44,
"sex":"男",
"grades":[
{
"grade":"43",
"levels":[
{
"level1":4
},
{
"level2":76
},
{
"level3":23
},
{
"level4":34
},
{
"level5":65
}
],
"child":[
{
"name":"小明",
"age":99,
"body":140
},
{
"name":"小云",
"age":87,
"body":130
},
{
"name":"小俊",
"age":98,
"body":150
}
]
}
]
}

JSON的数据格式(数组):

1.简单的JSON数组数据格式,SON数组数据里面有多个JSON对象:

[
{
"name":"张三",
"age":87,
"sex":"男"
},
{
"name":"李四",
"age":98,
"sex":"女"
},
{
"name":"王五",
"age":79,
"sex":"男"
},
{
"name":"赵六",
"age":98,
"sex":"女"
},
{
"name":"七七",
"age":87,
"sex":"男"
}
]

2.JSON数组数据 里面有多个JSON对象,最后JSON对象里面 还有一个对象:

[
{
"name":"张三",
"age":87,
"sex":"男"
},
{
"name":"李四",
"age":98,
"sex":"女"
},
{
"name":"王五",
"age":79,
"sex":"男"
},
{
"name":"赵六",
"age":98,
"sex":"女"
},
{
"name":"七七",
"age":87,
"sex":"男",
"pet":{
"name":"阿黄",
"age":99,
"sex":"母",
"color":"黑色"
}
}
]

3.JSON数组数据 里面有多个JSON对象,所有的JSON对象里面 还有一个对象:

[
{
"name":"张三",
"age":87,
"sex":"男",
"pet":{
"name":"阿姐",
"age":98,
"sex":"母",
"color":"黑色"
}
},
{
"name":"李四",
"age":98,
"sex":"女",
"pet":{
"name":"阿白",
"age":99,
"sex":"母",
"color":"黑色"
}
},
{
"name":"王五",
"age":79,
"sex":"男",
"pet":{
"name":"阿黄",
"age":99,
"sex":"母",
"color":"黑色"
}
},
{
"name":"赵六",
"age":98,
"sex":"女",
"pet":{
"name":"阿红",
"age":99,
"sex":"母",
"color":"黑色"
}
},
{
"name":"七七",
"age":87,
"sex":"男",
"pet":{
"name":"阿黄",
"age":99,
"sex":"母",
"color":"黑色"
}
}
]

JSON对象的数据格式(对象 Key):

注意:key是唯一的,如果相同的两个key,只会显示一个key

{
"dog":{
"name":"小黄",
"age":99,
"sex":"公"
},
"cat":{
"name":"小白",
"age":89,
"sex":"母"
},
"hog":{
"name":"小猪猪",
"age":88,
"sex":"母"
},
"cattle":{
"name":"小牛",
"age":78,
"sex":"公"
}
}

JSON数组的数据格式(数组 Key):

{
"persons":[
{
"name":"刘一",
"age":89,
"sex":"男"
},
{
"name":"许二",
"age":99,
"sex":"女"
},
{
"name":"廖三",
"age":90,
"sex":"男"
},
{
"name":"王五",
"age":99,
"sex":"女"
},
{
"name":"赵六",
"age":99,
"sex":"男"
}
]
}

JSON原则:

1.封装JSON数组的Key,首先需要一个JSON对象来包围;

{
"students":[ ]
}

2.JSON数组里面能放置JSON对象:

[
{ }
]

JSON数组里面也能放置JSON数组:

[
[ ]
]

  以下是❌错误示范:

    ["xxx":{}]

    ["xxx":"aaa"]

    ["xxx":[]]

3.key只能写在 JSON对象里面:

{
"key":[
{ },
{ }
]
}

  以下是❌错误示范:

    "key":[{},{}]

    "key":{}

Android-XML与JSON的理解-JSON的数据格式的更多相关文章

  1. [Android]XML和JSON的区别

    1.定义介绍 (1).XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允 ...

  2. Android(java)学习笔记208:Android中操作JSON数据(Json和Jsonarray)

    1.Json 和 Xml       JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的 ...

  3. Android(java)学习笔记151:Android中操作JSON数据(Json和Jsonarray)

    1.Json 和 Xml       JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的 ...

  4. 深入理解JSON对象

    × 目录 [1]语法规则 [2]stringify [3]parse[4]eval 前面的话 json(javascript object notation)全称是javascript对象表示法,它是 ...

  5. Android 手机卫士--构建服务端json、请求网络数据

    本文地址:http://www.cnblogs.com/wuyudong/p/5900384.html,转载请注明源地址. 数据的传递 客户端:发送http请求 http://www.oxx.com/ ...

  6. json基础教程|理解Json

    一. 在异步应用程序中发送和接收信息时,可以选择以纯文本和 XML 作为数据格式.这一期讨论一种有用的数据格式 JavaScript Object Notation(JSON),以及如何使用它更轻松地 ...

  7. JSON:如果你愿意一层一层剥开我的心,你会发现...这里水很深——深入理解JSON

    我们先来看一个JS中常见的JS对象序列化成JSON字符串的问题,请问,以下JS对象通过JSON.stringify后的字符串是怎样的?先不要急着复制粘贴到控制台,先自己打开一个代码编辑器或者纸,写写看 ...

  8. 深入理解 JSON

    我们先来看一个JS中常见的JS对象序列化成JSON字符串的问题,请问,以下JS对象通过JSON.stringify后的字符串是怎样的?先不要急着复制粘贴到控制台,先自己打开一个代码编辑器或者纸,写写看 ...

  9. Ace教你一步一步做Android新闻客户端(三) JSON数据解析

    对于服务器端来说,返回给客户端的数据格式一般分为html.xml和json这三种格式,现在给大家讲解一下json这个知识点, 1 如何通过json-lib和gson这两个json解析库来对解析我们的j ...

随机推荐

  1. C#中XML文档注释编译DLL引用到其它项目

    引用地址:http://zhidao.baidu.com/link?url=jSGYEBysE4gBExtNsHCVk3vd2OK2cMlaf02cS79GdRuGueTBdFJB0btOdBYkg_ ...

  2. ubuntu安装了mysql 但是编译报错 mysql.h: No such file or directory

    在Ubuntu体系中,已经安装了mysql,即应用sudo apt-get install mysql-server mysql-client 但是用C编译mysql数据库时,报错fatal erro ...

  3. Java-Runoob-高级教程-实例-环境设置实例:3.Java 实例 - 如何执行指定class文件目录(classpath)?

    ylbtech-Java-Runoob-高级教程-实例-环境设置实例:3.Java 实例 - 如何执行指定class文件目录(classpath)? 1.返回顶部 1. Java 实例 - 如何执行指 ...

  4. [html][LigerUI]使用示例

    <link href="Source/lib/ligerUI/skins/Aqua/css/ligerui-all.css" rel="stylesheet&quo ...

  5. 常用的ubantu操作命令

    Ubuntu软件操作的相关命令 sudo apt-get update 更新源 sudo apt-get install package 安装包 sudo apt-get remove package ...

  6. django2.0数据展示流程

    之前刚刚实现了数据添加的流程,那么数据展示是怎么回事 1 先在 views.py 中定义函数 增加获取数据的方式 from django.shortcuts import render from bl ...

  7. Linux及安卓的事件处理资料

    事件处理机制介绍: https://source.android.com/devices/input/overview.html http://newandroidbook.com/Book/Inpu ...

  8. hive中分组取前N个值的实现

    背景 假设有一个学生各门课的成绩的表单,应用hive取出每科成绩前100名的学生成绩. 这个就是典型在分组取Top N的需求. 解决思路 对于取出每科成绩前100名的学生成绩,针对学生成绩表,根据学科 ...

  9. zookeeper 分布式计数器

    分布式计数器的思路是:指定一个Zookeeper数据节点作为计数器,多个应用实例在分布式锁的控制下,通过更新该数据节点的内容来实现计数功能. Curator中封装了实现,例如 DistributedA ...

  10. Symfony 建立一个Bundle

    如果说,这个时候你萌生了一个去看一看Symfony源码的想法,个人建议还是算了,看了之后,你就会感到非常迷茫.因为他实在是大于绝大部分你使用过的框架,并且有多达近二十个的插件,使用了一些非常精巧的设计 ...