json与xml对比mimejson对象json数组(代码片段)

ChrisP3616 ChrisP3616     2022-12-22     502

关键词:

JSON(一)与XML对比、MIME、JSON对象、JSON数组

总结:

  • key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。
  • 点号:x = myObj.name;中括号:x = myObj[“name”]
  • 使用for…in遍历JSON数组更方便

1. JSON简介

JSON: JavaScript Object Notation(JavaScript 对象表示法)

JSON 是存储和交换文本信息的语法,类似 XML。

JSON 比 XML 更小、更快,更易解析。

什么是 JSON ?

  • JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
  • JSON 是轻量级的文本数据交换格式
  • JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
  • JSON 具有自我描述性,更易理解

JSON - 转换为 JavaScript 对象

JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。

由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。

与 XML 相同之处

  • JSON 是纯文本
  • JSON 具有"自我描述性"(人类可读)
  • JSON 具有层级结构(值中存在值)
  • JSON 可通过 JavaScript 进行解析
  • JSON 数据可使用 AJAX 进行传输

与 XML 不同之处

  • 没有结束标签
  • 更短
  • 读写的速度更快
  • 能够使用内建的 JavaScript eval() 方法进行解析
  • 使用数组
  • 不使用保留字

为什么使用 JSON?

对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:

使用 XML

  • 读取 XML 文档
  • 使用 XML DOM 来循环遍历文档
  • 读取值并存储在变量中

使用 JSON

  • 读取 JSON 字符串
  • 用 eval() 处理 JSON 字符串

2. JSON语法规则

JSON 语法是 JavaScript 对象表示语法的子集。

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 大括号 保存对象
  • 中括号 [] 保存数组,数组可以包含多个对象

JSON 名称/值对

JSON 数据的书写格式是:

key : value

名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:

“name” : “菜鸟教程”

这很容易理解,等价于这条 JavaScript 语句:

name = "菜鸟教程"

JSON 数组

JSON 数组在中括号 [] 中书写:

数组可包含多个对象:

[
     key1 : value1-1 , key2:value1-2 , 
     key1 : value2-1 , key2:value2-2 , 
     key1 : value3-1 , key2:value3-2 , 
    ...
     keyN : valueN-1 , keyN:valueN-2 , 
]

JSON 文件(MIME)

  • JSON 文件的文件类型是 .json
  • JSON 文本的 MIME 类型是 application/json

MIME的全称是Multipurpose Internet Mail Extensions,即多用途互联网邮件扩展类型

MIME的格式:

type/subtype

第一级分类:

第二级分类:

3. JSON vs XML

JSON 和 XML 都用于接收 web 服务端的数据。

最大的不同是:XML 需要使用 XML 解析器来解析,JSON 可以使用标准的 JavaScript 函数来解析。

为什么 JSON 比 XML 更好?

XML 比 JSON 更难解析。

JSON 可以直接使用现有的 JavaScript 对象解析。

针对 AJAX 应用,JSON 比 XML 数据加载更快,而且更简单:

使用 XML

  • 获取 XML 文档
  • 使用 XML DOM 迭代循环文档
  • 接数据解析出来复制给变量

使用 JSON

  • 获取 JSON 字符串
  • JSON.Parse 解析 JSON 字符串

4. JSON对象

对象语法

 "name":"runoob", "alexa":10000, "site":null 

JSON 对象使用在大括号()中书写。

对象可以包含多个 **key/value(键/值)**对。

key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。

key 和 value 中使用冒号(:)分割。

每个 key/value 对使用逗号(,)分割。

访问对象值

你可以使用点号(.)来访问对象的值:

var myObj, x;
myObj =  "name":"runoob", "alexa":10000, "site":null ;
x = myObj.name;

你也可以使用中括号([])来访问对象的值:

var myObj, x;
myObj =  "name":"runoob", "alexa":10000, "site":null ;
x = myObj["name"];

循环对象

你可以使用 for-in 来循环对象的属性:

ar myObj =  "name":"runoob", "alexa":10000, "site":null ;
for (x in myObj) 
    document.getElementById("demo").innerHTML += x + "<br>";

在 for-in 循环对象的属性时,使用中括号([])来访问属性的值:

var myObj =  "name":"runoob", "alexa":10000, "site":null ;
for (x in myObj) 
    document.getElementById("demo").innerHTML += myObj[x] + "<br>";

嵌套 JSON 对象

JSON 对象中可以包含另外一个 JSON 对象:

myObj = 
    "name":"runoob",
    "alexa":10000,
    "sites": 
        "site1":"www.runoob.com",
        "site2":"m.runoob.com",
        "site3":"c.runoob.com"
    

你可以使用点号(.)或者中括号([])来访问嵌套的 JSON 对象。

x = myObj.sites.site1;
// 或者
x = myObj.sites["site1"];

修改值

你可以使用点号(.)来修改 JSON 对象的值:

myObj.sites.site1 = "www.google.com";

你可以使用中括号([])来修改 JSON 对象的值:

myObj.sites["site1"] = "www.google.com";

删除对象属性

我们可以使用 delete 关键字来删除 JSON 对象的属性:

delete myObj.sites.site1;

你可以使用中括号([])来删除 JSON 对象的属性:

delete myObj.sites["site1"]

5. JSON数组

数组作为 JSON 对象

[ "Google", "Runoob", "Taobao" ]

JSON 数组在中括号中书写。

JSON 中数组值必须是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。

JavaScript 中,数组值可以是以上的 JSON 数据类型,也可以是 JavaScript 的表达式,包括函数,日期,及 undefined

JSON 对象中的数组

对象属性的值可以是一个数组:


"name":"网站",
"num":3,
"sites":[ "Google", "Runoob", "Taobao" ]

我们可以使用索引值来访问数组

x = myObj.sites[0];

循环数组

你可以使用 for-in 来访问数组

for (i in myObj.sites) 
    x += myObj.sites[i] + "<br>";

你也可以使用 for 循环:

for (i = 0; i < myObj.sites.length; i++) 
    x += myObj.sites[i] + "<br>";

嵌套 JSON 对象中的数组

JSON 对象中数组可以包含另外一个数组,或者另外一个 JSON 对象:

myObj = 
    "name":"网站",
    "num":3,
    "sites": [
         "name":"Google", "info":[ "Android", "Google 搜索", "Google 翻译" ] ,
         "name":"Runoob", "info":[ "菜鸟教程", "菜鸟工具", "菜鸟微信" ] ,
         "name":"Taobao", "info":[ "淘宝", "网购" ] 
    ]

我们可以使用 for-in 来循环访问每个数组:

for (i in myObj.sites) 
    x += "<h1>" + myObj.sites[i].name + "</h1>";
    for (j in myObj.sites[i].info) 
        x += myObj.sites[i].info[j] + "<br>";
    

修改数组值

你可以使用索引值来修改数组值:

myObj.sites[1] = "Github";

删除数组元素

我们可以使用 delete 关键字来删除数组元素:

delete myObj.sites[1];

java对象数据与json对象数据之间的相互转换(fastjson)(代码片段)

...之间的转换1、JSON是什么2、JSON数据格式对照3、主流JSON库对比3.1、json-lib【不推荐使用】3.2、Jackson【根据场景使用】3.3、Gson【根据场景使用】3.4、FastJson【根据场景使用】4、FastJson常用的JSON格式转换4.1、测试案例4.2、将JSON格式... 查看详情

jsonutil(java对象/list与json互转,xml与json互转)

1packagecom.chauvet.utils.json;23importjava.io.BufferedReader;4importjava.io.File;5importjava.io.FileInputStream;6importjava.io.FileWriter;7importjava.io.InputStreamReader;8importjava.util.List;910imp 查看详情

jsonutil(java对象/list与json互转,xml与json互转)

packagecom.chauvet.utils.json;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileWriter;importjava.io.InputStreamReader;importjava.util.List;importnet.sf.j 查看详情

json字符串与java对象互转

...下面先看下JSON的格式,  JSON可以有两种格式,一种是对象格式的,另一种是数组对象,{"name":"JSON","address":"北京市西城区","age":25}//JSON的对象格 查看详情

json字符串与java对象互转

...好,下面先看下JSON的格式,JSON可以有两种格式,一种是对象格式的,另一种是数组对象,{"name":"JSON","address":"北京市西城区","age":25}//JSON的对象格式的字符 查看详情

java中json对象与xml字符串互转

JSON转XML转:https://blog.csdn.net/u013714419/article/details/24804337XMLSerializerxmlSerial=newXMLSerializer(); JSONArrayjsonObject=JSONArray.fromObject(obj.toString()); Stringxml=xmlSerial.writ 查看详情

枚举序列化 Json 与 XML

...ublicenumCameraAccessMethodManual=0,Panasonic=1,Axis=2,AirCam=3我有一个对象,它根据不同的场景被序列化为json或XML,并且对象的属性之一是CameraAccessMethod类型。我遇到的问 查看详情

jqueru中数据交换格式xml和json对比

1.简介:  XML:extensiblemarkuplanguage,一种类似于HTML的语言,他没有预先定义的标签,使用DTD(documenttypedefinition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。具体的可以问Google或百度。相比之JS... 查看详情

c#对象与json字符串互相转换的几种方式

出自:http://blog.csdn.net/testcs_dn/article/details/78150046?locationNum=6&fps=1 目录(?)[-]方法一DoNet20需要借助于NewtonsoftJsondll方法二DataContractJsonSerializer方法三JavaScriptSerializer功能对比性能对比JSON转C实体类相关参 查看详情

androidjacksongsonfastjson解析框架对比

目前Android在使用的Json解析框架主要有Jackson、Gson、FastJson、org.json;因为AndroidStudio自带的org.json解析XML文件时会将整个XML文件的内容解析成树型结构存放在内存中并创建新对象,比较消耗时间和内存,解析速度和效率慢ÿ... 查看详情

java+json+对比两个json对象是否完全一样(代码片段)

一、需求需要对比这2个json字符串是否完全一样(不用管顺序)1Stringdui=""adGroupVO":"campaignId":"CAMPAIGN201912101000004559","adGroupChannel":"channelType":"SMS","resourceCode":"TEMPLATE_CODE","deliveryScene 查看详情

json与xml基本了解

...人的阅读和编写,便于js解析,支持复合数据类型(数组、对象、字符串、数字),能直接为服务器段代码使用,大大简化了服务器端和客户端的代码开发量。   缺点:相 查看详情

xml+json面试题都在这里

...JSON和XML什么是JSON和XMLJSON:JavaScriptObjectNotation【JavaScript对象表示法】.XML:extensiablemarkuplanguage被称作可扩展标记语言JSON和XML都是数据交换语言,完全独立于任何程序语言的文本格式。JSON与XML区别是什么?有什么共同点JSON与XML区... 查看详情

JSON到XML与java中的类型属性

...在java中保留type=属性?我不能使用JAXB注释,因为响应的对象太多并且它们可能会发生变化。XML.toSt 查看详情

数据集和json相互转换

...DELPHI原生类实现数据集和JSON相互转换JSON二要素:数组和对象。对象可以包含数组,数组可以包含对象。无层数限制。OLEVARIANT也类似,OLEVARIANT的一个元素又可以是OLEVARIANT,且无层数限制。XML亦类似。这也是它们能序列一切对象... 查看详情

数据集和json相互转换

...I原生类实现数据集和JSON相互转换 JSON二要素:数组和对象。对象可以包含数组,数组可以包含对象。无层数限制。OLEVARIANT也类似,OLEVARIANT的一个元素又可以是OLEVARIANT,且无层数限制。XML亦类似。这也是它们能序列一切对象... 查看详情

json类库jackson与json-lib性能对比[转]

Jackson:http://jackson.codehaus.org/JSON-lib:http://json-lib.sourceforge.net/Gson:http://code.google.com/p/google-gson/ 测试环境: 1、工作电脑:Intel双核E8400共6GHz,内存4GB,WinXP2、JSON-lib用最新的JDK15,GSON版本是最 查看详情

json-lib进行java与json字符串转换之一

这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下。在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML、JSON等,JSON作为一个轻量级的... 查看详情