json入门基础教程(转载)

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

如果您阅读了本系列前面的文章,那么应已对 数据格式 有了相当的认识。前面的文章解释了在许多异步应用程序中如何恰当地使用纯文本和简单的名称 / 值对。可以将数据组合成下面这样的形式:

firstName=Brett&lastName=McLaughlin&email=brett@newInstance.com

 

这样就行了,不需要再做什么了。实际上, Web 老手会意识到通过 GET 请求发送的信息就是采用这种格式。

然后,本系列讨论了 XML 。显然, XML 得到了相当多的关注(正面和负面的评价都有),已经在 Ajax 应用程序中广泛使用。关于如何使用 XML 数据格式,可以回顾 本系列前面的文章 :

<request>
 <firstName>Brett</firstName>
 <lastName>McLaughlin</lastName>
 <email>brett@newInstance.com</email>
</request>

 

这里的数据与前面看到的相同,但是这一次采用 XML 格式。这没什么了不起的;这只是另一种数据格式,使我们能够使用 XML 而不是纯文本和名称 / 值对。

本文讨论另一种数据格式, JavaScript Object Notation ( JSON ) 。 JSON 看起来既熟悉又陌生。它提供了另一种选择,选择范围更大总是好事情。

添加 JSON

在使用名称 / 值对或 XML 时,实际上是使用 JavaScript 从应用程序中取得数据并将数据转换成另一种数据格式。在这些情况下, JavaScript 在很大程度上作为一种数据操纵语言,用来移动和操纵来自 Web 表单的数据,并将数据转换为一种适合发送给服务器端程序的格式。

但是,有时候 JavaScript 不仅仅作为格式化语言使用。在这些情况下,实际上使用 JavaScript 语言中的对象来表示数据,而不仅是将来自 Web 表单的数据放进请求中。在这些情况下,从 JavaScript 对象中提取数据,然后再将数据放进名称 / 值对或 XML ,就有点儿多此一举 了。这时就合适使用 JSON : JSON 允许轻松地将 JavaScript 对象转换成可以随请求发送的数据(同步或异步都可以)。

JSON 并不是某种魔弹;但是,它对于某些非常特殊的情况是很好的选择。

 

 

JSON 基础

简单地说, JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪(稍后会看到几个示例),但是 JavaScript 很容易解释它,而且 JSON 可以表示比名称 / 值对更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。

简单 JSON 示例

按照最简单的形式,可以用下面这样的 JSON 表示名称 / 值对:

{ "firstName": "Brett" } 

 

这个示例非常基本,而且实际上比等效的纯文本名称 / 值对占用更多的空间:

firstName=Brett

 

但是,当将多个名称 / 值对串在一起时, JSON 就会体现出它的价值了。首先,可以创建包含多个名称 / 值对的记录 ,比如:

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" }

 

从语法方面来看,这与名称 / 值对相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系。

值的数组

当需要表示一组值时, JSON 不但能够提高可读性,而且可以减少复杂性。例如,假设您希望表示一个人名列表。在 XML 中,需要许多开始标记和结束标记;如果使用典型的名称 / 值对(就像在本系列前面文章中看到的那种名称 / 值对),那么必须建立一种专有的数据格式,或者将键名称修改为 person1-firstName 这样的形式。

如果使用 JSON ,就只需将多个带花括号的记录分组在一起:

{ "people": [
 { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
 { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
 { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
]}

 

这不难理解。在这个示例中,只有一个名为 people 的变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和电子邮件地址。上面的示例演示如何用括号将记录组合成一个值。当然,可以使用相同的语法表示多个值(每个值包含多个记录):

{ "programmers": [
 { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
 { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
 { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
 ],
"authors": [
 { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
 { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
 { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
 ],
"musicians": [
 { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
 { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
 ]
}

 

这里最值得注意的是,能够表示多个值,每个值进而包含多个值。但是还应该注意,在不同的主条目( programmers 、 authors 和 musicians )之间,记录中实际的名称 / 值对可以不一样。 JSON 是完全动态的,允许在 JSON 结构的中间改变表示数据的方式。

在处理 JSON 格式的数据时,没有需要遵守的预定义的约束。所以,在同样的数据结构中,可以改变表示数据的方式,甚至可以以不同方式表示同一事物。

 

 

在 JavaScript 中使用 JSON

掌握了 JSON 格式之后,在 JavaScript 中使用它就很简单了。 JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。

将 JSON 数据赋值给变量

例如,可以创建一个新的 JavaScript 变量,然后将 JSON 格式的数据字符串直接赋值给它:

var people =
 { "programmers": [
    { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
    { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
    { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
   ],
 "authors": [
    { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
    { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
    { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
   ],
 "musicians": [
    { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
    { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
   ]
 }

 

这非常简单;现在 people 包含前面看到的 JSON 格式的数据。但是,这还不够,因为访问数据的方式似乎还不明显。

访问数据

尽管看起来不明显,但是上面的长字符串实际上只是一个数组;将这个数组放进 JavaScript 变量之后,就可以很轻松地访问它。实际上,只需用点号表示法来表示数组元素。所以,要想访问 programmers 列表的第一个条目的姓氏,只需在 JavaScript 中使用下面这样的代码:

people.programmers[0].lastName;

 

注意,数组索引是从零开始的。所以,这行代码首先访问 people 变量中的数据;然后移动到称为 programmers 的条目,再移动到第一个记录( [0] );最后,访问 lastName 键的值。结果是字符串值 “ McLaughlin ”。

下面是使用同一变量的几个示例。

people.authors[1].genre                       // Value is "fantasy"
 
people.musicians[3].lastName          // Undefined. This refers to the fourth entry,
 and there isn't one
 
people.programmers.[2].firstName      // Value is "Elliotte"

 

利用这样的语法,可以处理任何 JSON 格式的数据,而不需要使用任何额外的 JavaScript 工具包或 API 。

修改 JSON 数据

正如可以用点号和括号访问数据,也可以按照同样的方式轻松地修改数据:

people.musicians[1].lastName = "Rachmaninov";

 

在将字符串转换为 JavaScript 对象之后,就可以像这样修改变量中的数据。

转换回字符串

当然,如果不能轻松地将对象转换回本文提到的文本格式,那么所有数据修改都没有太大的价值。在 JavaScript 中这种转换也很简单:

String newJSONtext = people.toJSONString();

 

这样就行了!现在就获得了一个可以在任何地方使用的文本字符串,例如,可以将它用作 Ajax 应用程序中的请求字符串。

更重要的是,可以将任何 JavaScript 对象转换为 JSON 文本。并非只能处理原来用 JSON 字符串赋值的变量。为了对名为 myObject 的对象进行转换,只需执行相同形式的命令:

String myObjectInJSON = myObject.toJSONString();

 

这就是 JSON 与本系列讨论的其他数据格式之间最大的差异。如果使用 JSON ,只需调用一个简单的函数,就可以获得经过格式化的数据,可以直接使用了。对于其他数据格式,需要在原始数据和格式化数据之间进行转换。即使使用 Document Object Model 这样的 API (提供了将自己的数据结构转换为文本的函数),也需要学习这个 API 并使用 API 的对象,而不是使用原生的 JavaScript 对象和语法。

最终结论是,如果要处理大量 JavaScript 对象,那么 JSON 几乎肯定是一个好选择,这样就可以轻松地将数据转换为可以在请求中发送给服务器端程序的格式。

 


 

结束语

本系列已经用大量时间讨论了数据格式,这主要是因为几乎所有异步应用程序最终都要处理数据。如果掌握了发送和接收所有类型的数据的各种工具和技术,并按照最适合每种数据类型的方式使用它们,那么就能够更精通 Ajax 。在掌握 XML 和纯文本的基础上,再掌握 JSON ,这样就能够在 JavaScript 中处理更复杂的数据结构。

本系列中的下一篇文章将讨论发送数据以外的问题,深入介绍服务器端程序如何接收和处理 JSON 格式的数据。还要讨论服务器端程序如何跨脚本和服务器端组件以 JSON 格式发送回数据,这样就可以将 XML 、纯文本和 JSON 请求和响应混合在一起。这可以提供很大的灵活性,可以按照几乎任何组合结合使用所有这些工具。

 

xml的写法 :

 

<contact>

 

  <friend>

   <name>Michael</name>

   <email>17bity@gmail.com</email>

   <homepage>http://www.jialing.net</homepage>

  </friend>

 

  <friend>

   <name>John</name>

   <email>john@gmail.com</email>

   <homepage>http://www.john.com</homepage>

  </friend>

 

  <friend>

   <name>Peggy</name>

   <email>peggy@gmail.com</email>

   <homepage>http://www.peggy.com</homepage>

  </friend>

 

</contact>

 

而 JSON:

 

[

{

  name:"Michael",

  email:"17bity@gmail.com",

  homepage:"http://www.jialing.net"

},

{

  name:"John",

  email:"john@gmail.com",

  homepage:"http://www.jobn.com"

},

{

  name:"Peggy",

  email:"peggy@gmail.com",

  homepage:"http://www.peggy.com"

}

]

 

 

JSON 的格式 :

1,对象 :

{name:"Peggy",email:"peggy@gmail.com",homepage:"http://www.peggy.com"}

{ 属性 : 值 , 属性 : 值 , 属性 : 值 }

2,数组是有顺序的值的集合。一个数组开始于 "[",结束于 "]",值之间用 ","分隔。

[

{name:"Peggy",email:"peggy@gmail.com",homepage:"http://www.peggy.com"}, {name:"Peggy",email:"peggy@gmail.com",homepage:"http://www.peggy.com"},

{name:"Peggy",email:"peggy@gmail.com",homepage:"http://www.peggy.com"}

]

3, 值可以是字符串、数字、 true、 false、 null,也可以是对象或数组。这些结构都能嵌套。

vue.js对String类型转json格式及json对象转String | 详细教程,建议收藏 阅读详情

相关推荐

json标准格式

这是一个json文件的标准格式,下载下来查看的话,五分钟之内能明白什么是json,什么是json格式的文件

json入门基础教程

在异步应用程序中发送和接收信息时,可以选择以纯文本和 XML 作为数据格式。掌握 Ajax 的这一期讨论另一种有用的数据格式 JavaScript Object Notation(JSON),以及如何使用它更轻松地在应用程序中移动数据和对象。 如果您阅读了本系列前面的文章,那么应已对数据格式有了相当的认识。前面的文章解释了在许多异步应用程序中如何恰当地使用纯文本和简单的名称/值对。可以将数据组合...

weixin_30621959的博客 333

杰森数据

杰森数据

JSON

JSON 通过阅读《JSON必知必会》一书,大致梳理一下JSON的概念、语法、用法以及注意事项: 什么是JSON JSON语法 什么是JSON JSON:(JavaScript Object Notation)是一种数据交换格式 JSON基于JavaScript对象字面量,但它具有语言无关性。作为一种数据交换格式,可移植性良好。 JSON语法 JSO...

Allentown的博客 1167

基于单片机红外线遥控Proteus仿真电路发射接收

*单片机设计介绍,基于单片机红外线遥控Proteus仿真电路发射接收。

2201_75940997的博客 3942

制作 img系统镜像的详细方法

      I.MX6开发板目前支持从TF卡和eMMC启动,启动时,由于各个不同的启动文件对路径有不同的要求,例如uboot文件要求位于启动设备的某个块,dtb文件要求在FAT分区上,文件系统要求在Linux分区上,基于此,我们目前采用将映像制作成img文件的方式,这样可以更简单完成对启动卡的制作。 关于如何制作img,方法如下:方法一  Windows下面利用Win32工具1.   准备我司提供...

armkits的博客 4万+

[转载] json字符串转list_Python入门进阶教程JSON操作

参考链接: python json 0: 入门介绍 「关注我,和我一起放下灵魂,让灵魂去搬砖。」 作者:一叶 介绍:放不下灵魂的搬砖者 全文共1225字,阅读全文需6分钟 Python版本3.8.0,开发工具:Pycharm 什么是JSON? JSON 的全称是 JavaScript Object Notation,即 JavaScript 对象符号,它是一种轻量级、跨平台、跨语言的数据交换格式,其设计意图是把所有事情都用设计...

u013946150的博客 513

SECS/GEM协议学习教程

摘要:SECS/GEM是半导体制造设备通信的国际标准,定义了主机系统与设备间的通信规范,包括设备控制、状态监控、数据采集等功能。协议采用分层架构(应用层、消息层、传输层、物理层),支持关键消息类型如S1F13(建立通信)、S2F13(数据采集)等。通信流程涵盖建立连接、数据交换和终止会话,并通过状态变量(SVID)、事件(CEID)等实现实时交互。典型应用包括设备初始化、报警处理及配方管理,需处理数据类型(如U2、A、L)和通信调试问题。

GitHub个人仓库地址:https://github.com/feiyuluoye ; 个人塔罗牌占卜平台:http://118.126.82.12:8080/ ; 欢迎广大Coding友共同交流讨论。 2056

[转载]JSON 入门指南

 JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与JavaScript 的交互。本文将快速讲解 JSON 格式,并通过代码示例演示如何分别在客户端和服务器端进行 JSON 格式数据的处理。 尽管有许多宣传关于 XML 如何拥有跨平台,跨语言的优势,然而,除非应用于 Web Services,否则,在普通的 Web

溺水的鱼 - Later equals never. 951

【Python实战解析】从数据爬取到房价预测:一个完整的数据科学项目流程拆解

本文详细拆解了一个完整的Python数据科学项目流程,从爬取长沙二手房数据到房价预测模型构建。通过实战案例,介绍了数据爬取、清洗、可视化及模型优化的关键技巧,帮助开发者掌握Python在数据分析中的应用,提升程序开发能力。

weixin_30379531的博客 411

cesium 气象云(体积云)

本文介绍了基于Cesium的气象云渲染技术方案,其核心是通过GPU加速的光线投射算法实现气象云的三维可视化。方案采用分层架构设计:GPU计算层由顶点着色器和片段着色器组成,负责光线投射计算、3D纹理采样和颜色映射;CPU控制层处理数据预处理、纹理创建和参数配置。关键技术包括:顶点着色器计算相机位置和光线方向,片段着色器实现光线步进采样、颜色映射和半透明混合。该方案高效解决了气象数据与地理场景的融合问题,支持云图、温度场等复杂三维气象数据的实时渲染,具有高真实感和良好性能。

God's asylum的博客 1201

JSON入门详解-转载

原创:JSON入门详解热7已有 109 次阅读  2011-03-30 10:57          JSON(JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。JSON它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。JSON是JavaScript原生格式,这意味着在JavaScri

神叹的专栏 521

YoloV8改进策略:主干网络篇|MobileNetV4主干替换YoloV8的BackBone(独家原创)

今年,轻量级王者MobileNetV4闪亮登场!在我们这篇文章里,我们把MobileNetV4加入到了YoloV8中,替换原有的BackBone。哈哈,你猜怎么着?效果超赞!文章里详细记录了改进过程,给那些正在为创新点子发愁的小伙伴们提供了满满的灵感。嘿,想要发表关于轻量级改进的论文?这篇文章绝对是你的首选参考!

m0_47867638的博客 3191

【转载】C#工具类:Json操作帮助类

Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来简化相应的操作,该工具类中包含以下功能:对象转JSON、数据表转键值对集合、数据集转键值对数组字典 、数据表转JSON、JSON文本转对象(泛型方法)、将JSON文本转换为数据表数据、将JSON文本转换成数据行、将json转换为DataTable等。 封装后...

weixin_30498807的博客 222

YOLOv12涨点改进 | 全网首发,Conv改进篇 | CVPR 2025 | YOLOv12引入FDConv频率动态卷积,含A2C2f_FDConv二次创新模块,能够捕捉更加丰富和复杂的特征信息

本文提出了一种改进YOLOv12目标检测模型的方法——频率动态卷积(FDConv)。FDConv通过增强卷积核的频率响应多样性,使模型能够更好地处理不同频率信息,从而提高检测精度。该方法包含三个关键组件:傅里叶离散权重(FDW)实现频率分组,核空间调制(KSM)动态调整频率响应,以及频率带调制(FBM)进行频域调节。实验结果表明,FDConv能以较少的参数增长(仅增加3.6M)显著提升模型性能,在目标检测、实例分割等任务中优于传统动态卷积方法。该方法可灵活集成到ResNet、ConvNeXt等多种架构中。

Ai缝合怪、助力小伙伴高效发论文 421

面试提问:数据开发中如何通过指标拆解来指导SQL编写?(附拆解模板)

摘要:指标拆解是一种高效的数据分析方法,通过将复杂业务指标分解为可执行的原子指标,指导SQL查询的编写。核心步骤包括:明确指标定义、拆解原子指标、定位数据源、确定分组维度、构建中间表。文章提供了指标拆解模板和实际案例(如用户留存率计算),并总结了拆解带来的5大好处:逻辑清晰、易于调试、可复用、降低错误率、便于协作。最后强调"一定义、二拆解、三定位、四分步、五合并"的口诀,适用于数仓开发、BI报表等场景。

石榴姐yyds 266

【转载】JSON介绍

0.说明 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。 同时也易于机器解析和生成。 它是基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式, 但是也使用了类似于C语言家族...

木木与呆呆的专栏 437

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

转载:JSON 入门指南

转载:JSON 入门指南 [url]http://www.ibm.com/developerworks/cn/web/wa-lo-json/#author[/url]

咫尺天涯 154

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JSON入门学习总结

(尊重劳动成果,转载请注明出处:http://blog.youkuaiyun.com/qq_25827845/article/details/57506467冷血之心的博客) 1、什么是JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 JSON是用字符串来表示Javascript对象,例如可以在Servlet中发送一个JSON格式的字符串给客...

冷血之心的博客 9248

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JSON详解(转载)

一、基本的解释 JSON(JavaScriptObject Notation, 有道翻译的意思是:JavaScript 对象表示法) 是一种轻量级的数据交换格式。 二、语法规则 数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 1.JSON 名称/值对 "firstName" : "John" 2.JSON ...

纵与横的博客 264

【转载】JSON语法RFC4627

Network Working Group D. Crockford Request for Comments: 4627 JSON.org Category: Informational ...

木木与呆呆的专栏 817

转载 json 文章

Universal Binary JSON Specification 通用二进制JSON规范 The universally compatible format specification for binary JSON. 二进制的JSON普遍兼容的格式规范 。 .Specification 规格 Examples 例子 Best Practices 最佳实践 Type ...

xiangweiming329的专栏 281

JSON 入门指南

什么是JSON?  JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Jav...

weixin_30787531的博客 132
上一篇: php curl用法
KeVinCode_007
博客等级 码龄20年 1粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值