对象简谱(象谱/*JSON*/)是用于将结构化数据表示为君土脚本对象的一种标准格式,通常用于在网站上表示和传输数据(例如从服务器向客户端发送一些数据,因此可以将其显示在网页上)。您会经常遇到它,所以在本文中,我们向您提供使用君土脚本处理对象简谱
的所有工作,包括访问对象简谱
对象中的数据项并编写自己的对象简谱
。
什么是对象简谱?
对象简谱是一种基于文本的数据格式,遵循爪哇脚本(JavaScript)对象语法,它是道格拉斯·克罗克福特推广的。尽管它非常类似于爪哇脚本对象字面语法,但它可以独立于脚本使用,而且许多编程环境都具有读取(解析)和生成对象简谱的能力。
对象简谱可以作为一个对象或者字符串存在,前者用于解读 对象简谱 中的数据,后者用于通过网络传输 对象简谱 数据。 这不是一个大事情——君土脚本 提供一个全局的 可访问的 对象简谱 对象来对这两种数据进行转换。
一个 对象简谱 对象可以被储存在它自己的文件中,这基本上就是一个文本文件,扩展名为 .json
, 它的 内容类型/*MIME type*/ 为 application/json
.
对象简谱 结构
我们已经可以推测出 对象简谱 对象就是基于 君土脚本 对象,而且这几乎是正确的。您可以把 君土脚本 对象原原本本的写入 对象简谱 数据——字符串,数字,数组,布尔还有其它的字面值对象。这允许您构造出一个对象树,如下:
{
"书籍列表名称" : "传统文章",
"类型" : "经典",
"创建年份" : 2016,
"国家" : "中国",
"在使用" : 1,
"成员" : [
{
"书名" : "中庸",
"阅读次数" : 89,
"作者" : "子思",
"摘录" : [
"凡事豫则立,不豫则废。",
"上不怨天,下不尤人。",
"唯天下至诚,为能经纶天下之大经,立天下之大本,知天地之化育。"
]
},
{
"书名" : "大学",
"阅读次数" : 60,
"作者" : "曾子",
"摘录" : [
"物有本末,事有终始,知所先后,则近道矣。",
"自天子以至于庶人,壹是皆以修身为本。",
"此谓国不以利为利,以义为利也。"
]
},
{
"书名" : "老子",
"阅读次数" : 30,
"作者" : "老子",
"摘录" : [
"上善若水。水善利万物而不争,处众人之所恶,故几于道。",
"天之道,损有馀而补不足。人之道,则不然,损不足以奉有馀。孰能有馀以奉天下,唯有道者。",
"天之道,利而不害;圣人之道,为而不争。",
"民之从事,常于几成而败之。",
"将欲取天下而为之,吾见其不得已。"
]
}
]
}
如果我们要加载对象进入 君土脚本 程序,以保存为一个名为 传统文章
对象为例,我们使用 . 或 [] 访问对象内的数据(关于. 和 []概念,见 对象基础 )。如:
传统文章.类型
传统文章["在使用"]
为了访问对象中的对象,您只需简单地链式访问(通过属性名和数组索引)。例如,访问 传统文章
对象中的 成员
数组对象的第二个元素的 摘录
数组对象的第三个元素,您可以这样做:
传统文章["成员"][1]["摘录"][2]
- 首先我们有变量名
传统文章
,储存对象 。 - 在对象中我们想访问
成员
属性,所以我们使用["成员"]
。 成员
包含有对象数组,我们想要访问第二个元素,所以我们使用[1]
。- 在对象内,我们想访问
摘录
属性,所以我们使用["摘录"]
。 摘录
属性是一个文章中的数组。我们想要第三个,所以我们使用[2]
。
对象简谱 数组
前面我们已经说过,”我们已经可以推测出 对象简谱对象就是基于 君土脚本 对象,而且这几乎是正确的“——我们说几乎正确的原因是数组对象也是一种合法的 对象简谱 对象,例如:
[
{
"书名" : "中庸",
"阅读次数" : 89,
"作者" : "子思",
"摘录" : [
"凡事豫则立,不豫则废。",
"上不怨天,下不尤人。",
"唯天下至诚,为能经纶天下之大经,立天下之大本,知天地之化育。"
]
},
{
"书名" : "大学",
"阅读次数" : 60,
"作者" : "曾子",
"摘录" : [
"物有本末,事有终始,知所先后,则近道矣。",
"自天子以至于庶人,壹是皆以修身为本。",
"此谓国不以利为利,以义为利也。"
]
}
]
上面是完全合法的 对象简谱。您只需要通过数组索引就可以访问数组元素,如[0]["摘录"][0]。
其他注意事项
- 对象简谱 是一种纯数据格式,它只包含属性,没有方法。
- 对象简谱要求在字符串和属性名称周围使用双引号。 单引号无效。
- 甚至一个错位的逗号或分号就可以导致 对象简谱 文件出错。您应该小心的检查您想使用的数据(虽然计算机生成的 对象简谱 很少出错,只要生成程序正常工作)。
- 对象简谱 可以将任何标准合法的 对象简谱 数据格式化保存,不只是数组和对象。比如,一个单一的字符串或者数字可以是合法的 对象简谱 对象。虽然不是特别有用处……
- 与 君土脚本 代码中对象属性可以不加引号不同,对象简谱 中只有带引号的字符串可以用作属性。
对象和文本间的转换
当我们接收到一些 字符串作为 对象简谱 数据,然后我们想要将它转换为对象。当我们想要发送 对象简谱 数据作为信息,我们将需要转换它为字符串,我们经常需要正确的转换数据,幸运的是,这两个问题在网络环境中是那么普遍, 于是运行系统拥有一个内建的 象谱 对象,它包含以下两个方法。
析/*parse*/()
: 以文本字符串形式接受 对象简谱 对象作为参数,并返回相应的对象。串/*stringify*/()
: 接收一个对象作为参数,返回一个对应的 对象简谱 字符串。
尝试将下面的代码在您的君土集成开发环境运行, 来看看会发生什么:
定 象谱0 = { "名": "小明", "年龄": 15 };
控制台.日志(象谱0);
定 字串0 = 象谱.串(象谱0);
控制台.日志(字串0);
这儿我们创建了一个君土脚本 对象,然后检查了它包含了什么,然后用串()
将它转换成对象简谱字符串,最后保存返回值作为变量。然后再一次检查。
正如您所想, 析()
做相反的事情,我们使用 析()
来将字串0
转换成为 君土脚本 对象。
定 人 = 象谱.析(字串0);
控制台.日志(人.名); // 打印 "小明"
控制台.日志(人.年龄); // 打印 15
布尔型数据的处理
在对象简谱的字符串表达中, 布尔型数据的值是用英文单词“true”和“false”来表示真和假. 我们也可以使用别的方式来表达真和假, 用1 表示真, 0 表示假. 在上面的例子中, 在表达是否”在使用” 时, 它的值是 1.
这是一个用布尔型数据表达是否“在使用”的对象简谱的字符串例子:
[
{
"书籍列表名称" : "传统文章",
"在使用" : true
},
{
"书籍列表名称" : "传统文章2",
"在使用" : false
}
]
在对这个字符串解析后,得到的对象是:
[
{
书籍列表名称 : "传统文章",
在使用 : 真
},
{
书籍列表名称 : "传统文章2",
在使用 : 假
}
]
这是一个用数字型数据表达是否“在使用”的对象简谱的字符串例子:
[{
"书籍列表名称" : "传统文章",
"在使用" : 1
},
{
"书籍列表名称" : "传统文章2",
"在使用" : 0
}]
在对这个字符串解析后,得到的对象是:
[
{
书籍列表名称 : "传统文章",
在使用 : 1
},
{
书籍列表名称 : "传统文章2",
在使用 : 0
}
]
因为在君土脚本中, 当做条件判断时, 真 和 1 都会被认为是真, 假和0 都会被认为是假. 我们在对象简谱的字符串中使用1和0来表示真和假, 对于代码逻辑判断是没有影响的.
总结
在这个文章中,我们给了您一个简单的示例来在自己的程序中使用 对象简谱,包括创建和处理 对象简谱,还有如何访问 对象简谱 内的数据。