织梦dedecms二次开发php使用json讲解

简 单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。

这个字符串看起来有点儿古怪(稍后会看到几个示例),但是 JavaScript 很容易解释它,而且 JSON 可以表示比名称/值对更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。

简单 JSON 示例

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

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

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

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

值的数组

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

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

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

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

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

在 JavaScript 中使用 JSON

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

将 JSON 数据赋值给变量

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

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

访问数据

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

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

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

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

修改 JSON 数据

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

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

转换回字符串

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

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

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

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

php织梦二次开发的功能例子,织梦dedecms二次开发php使用json讲解相关推荐

  1. php织梦二次开发的功能例子,织梦DedeCMS二次开发联动筛选功能的实现(含多选功能)...

    织梦默认的列表页没有筛选功能,但有时候我们做产品列表页的时候,产品的字段比较多,很多人都需要用到筛选功能,这样可以让用户更方便的找到自己所需要的东西,实现这个联动筛选功能需要对织梦进行二次开发,下面就 ...

  2. 织梦php开发tags功能开发,织梦dedecms二次开发中几个标签的应用

    在织梦dedecms 里面对于数组进行循环的标签有好几个,在前台模板即使用静态模板引擎有,{dede:foreach array='数组名称'}[field:key/] [field:value/]{ ...

  3. 如何学习织梦二次开发,怎样进行dedecms二次开发

    在织梦基地已经做过一个教程"织梦二次开发流程分析教程",在这个教程里面对二次开发流程作了简单分析,本教程将介绍如何学习织梦二次开发和对织梦系统进行二次开发. 掌握二次开发基础知识 ...

  4. 织梦二次开发写php,PHP教程—DedeCMS二次开发(二)

    织梦内容管理系统(DedeCMS),是一个集内容发布.编辑.管理检索等于一体的网站管理系统(Web CMS),他拥有国外CMS众多特点之外,还结合中国用户的需要,对内容管理系统概念进行明确分析和定位. ...

  5. 二手交易APP开发主要功能有哪些?(二)

    二手交易APP开发主要功能有哪些?(二) 在线服务:二手交易手机应用软件.小程序的在线服务功能,为买家与卖家提供互相咨询了解与解答的途径,促进买卖家之间交流互动. 在线预约:通过在线预约功能,提供卖家 ...

  6. (dede)织梦系统二次开发笔记

    (dede)织梦系统二次开发记录 --soulsjie 一.模板常用文件说明 模板文件都在文件夹templets下,我们以默认模板(default)为例,对模板文件结构进行分析: 首页模板文件目录 \ ...

  7. dedecms二次开发:自定义模型使用教程

    dedecms二次开发:自定义模型使用教程 在织梦系统中有内容模型这个概念,不同内容模型可以用来构建不同内容形式的站点,在系统中自带了以下几种模型:普通文章.图集.软件.商品.分类信息.专题.通过系统 ...

  8. Mixly第三方库开发的两种方法——U8g2库二次开发

    Mixly第三方库开发的两种方法--U8g2库二次开发 前言 方法一:自定义库 1.创建库文件夹 2.开始编程 2.1.定义图形块的基本信息 2.2.定义图形块的外观样式 2.3.定义图形块与C语言的 ...

  9. 抖音seo源码二次开发,短视频seo源码二次开发

    抖音seo源码二次开发,短视频seo源码二次开发 开发逻辑及部分代码展示 抖音seo系统前端采用vue 与React技术语言,后端采用jave后台技术语言. 抖音seo是什么技术逻辑呢?seo是搜索引 ...

最新文章

  1. PTA 基础程序编程集 7-2 然后是几点 C语言
  2. 刚获20亿投资的通用无人车Cruise估值达300亿美元,叫板Waymo!
  3. 游戏平台运维自动化扩展之故障自愈
  4. 【 MATLAB 】离散傅里叶级数(DFS)与DFT、DTFT及 z变换之间的关系
  5. BZOJ.4247.挂饰(背包DP)
  6. 发现自己的BLOG被转载了
  7. MySQL 错误对照表
  8. 操作系统:内存连续分配方式采用的几种算法及各自优劣
  9. jQuery基础修炼圣典—DOM篇(二)jQuery遍历
  10. unix时间戳(unix timestamp)与北京时间的互转方法
  11. oracle分区交换有啥好处,分区交换的速度为什么快?
  12. matlab 形态学 颗粒_数字图像处理Matlab-形态学图像处理(附代码)
  13. 创建虚拟环境和新建工程目录
  14. 联邦学习--数据攻击(2)
  15. Flask安装首页显示
  16. 土豆 android 缓存路径,#土豆记事#教你开发Android App之 —— Hello Android
  17. dynamipsGUI+VMware
  18. IAR (10.10.1) 安装与破解教程
  19. 存算一体——后摩尔时代的AI芯片架构
  20. windows清理C盘

热门文章

  1. 数学工具MapleSim2022的安装配置使用
  2. 分治法的基本思想与例子解析
  3. 基于asp.net802餐厅餐饮管理系统
  4. 实验室LIMS系统能带来什么好处?
  5. 在Hadoop中用Python实现MapReduce代码
  6. 营销型网站建设前期策划的意义
  7. DAZ3D发布了新一代3D模型Genesis 8.1
  8. 红包php源码,生成微信红包
  9. ETC1/DXT1 compressed textures are not supported when publishing to iPhone
  10. 苹果成亚马逊云计算大客户 答应5年“消费”15亿美元