Adobe Spry 中文文档库 -- Spry JSON 数据集概述
JSON 基于于JavaScript对象标记。它是一个用Javascript编写的轻量级的数据交换格式。使用简单并且文件小巧是一些开发者的首选。
现在Spry可以在页面中使用这种数据格式了。
Spry区域是不关心数据的来源的,所以使用JSON数据集是不用改变区域和数据参考的。JSON的工作方式与XML数据集相似,例如过滤(filtering)和缓存(caching),所以在本文中不再讨论,关于基础数据集功能请参考 Data Set概述 。
例子通过两种方法来使用JSON, JSON范例
本文将讨论JSON不同于数据集的特性。
什么是JSON?
类似 XML, JSON 用一个重复的数据结构来传输数据,下面是一个简单的范例:
{
"firstName": "Jason",
"lastName": "Jones",
"address": {
"city": "San Francisco, CA",
"zip": 94121,
"address": "444 Columbus Ave"
},
"email": [
"jason@sf.com",
"sjones@adobe.com"
]
}
关于JSON的更多信息可以查看 JSON 入门. JSON自身允许组合嵌套结构。 (这就是为什么我们要在嵌套的数据集解决方案之后讲)
创建JSON数据集
JSON的使用与使用XML数据集,只有少量差异。
首先,你需要 'SpryJSONDataSet.js'. 'SpryData.js', 其中包含区域操作代码、过滤(filtering)和其他功能,这是必须的,对于JSON数据集来说不需要'xpath.js'。
<script src="SpryData.js" language="javascript" type="text/javascript"></script> <script src="SpryJSONDataSet.js" language="javascript" type="text/javascript"></script>
对于数据集,你需要指定一个包含JSON数据的文件并且指定一个数据节点作为数据集的起点。
一个典型的JSON数据集结构如下:
var dsExample4 = new Spry.Data.JSONDataSet("../../data/json/object-02.js", { path: "batters.batter" });
JSON文件参考在这里获取。
这个结构开始于一个变量名,这个变量名就是数据集的名字,这个名字可以是你想要的任何合法的名字。多个数据集的名字之间必须唯一。
var dsExample4
创建一个新的对象:
- new Spry.Data.JSONDataSet
注意,Javascript是大小写敏感的。
接下来,指定包含JSON信息的文件路径:
- new Spry.Data.JSONDataSet("../../data/json/object-02.js");
If it is a path to a file, wrap it in quotes as shown. Variables and Spry data references can also be used here, without quotes.
创建一个数据集使用的最少步骤。
路径和子路径
如果你一在JSON数据中指定一个部分,则可以指定一个路径。这是一个可选参数,需要被包含在{}中。
- { path: "node.sub node" }
注意: JSON用点来指示路径。就象XML和XPATH中用 '/'指示路径一样 。
另一个范例:
{
"firstName": "Jason",
"lastName": "Jones",
"address": {
"city": "San Francisco, CA",
"zip": 94121,
"address": "444 Columbus Ave"
},
"email": [
"jason@sf.com",
"sjones@adobe.com"
]
}
如果你想获得文件中的"city"节点,因该这样写:
var ds1 = new Spry.Data.JSONDataSet("myfile.js", {path: "address.city"});
子路径
因为一些JSON文件很复杂,JSON数据集通过另一种高级的方式进行平面化(flattening)指定。
一些JSON格式用嵌套结构,例如下面的 "image"和 "thumbnail"属性:
{ "id": "0001", "type": "donut", "name": "Cake", "image": { "url": "images/0001.jpg", "width": 200, "height": 200 }, "thumbnail": { "url": "images/thumbnails/0001.jpg", "width": 32, "height": 32 } }
有时希望数据集中的结构能平面化(flatten)的象数据列一样,当平面化顶级JSON对象时你可以用"subPaths"选项来告诉JSON数据集来包含嵌套的结构,或通过"path" 选项指定数据。在范例中因为我们没有指定 "path" 选项, JSON数据集讲尝试仅平面化顶级对象。包含我们想要的 "image"嵌套结, 我们只需要简单的指定"image".
var dsExample6 = new Spry.Data.JSONDataSet("../../data/json/object-03.js", { subPaths: "image" });
Spry将提取"image"节点信息,并拉到顶级节点,因此在这个数据集中包含子节点信息,现在,"image"子节点可以用'image.'加子节点名字来引用。
{id} | {type} | {name} | {image.width} | {image.height} | {image.url} |
---|
Spry支持多个子路径,在上面的例子中,有可能用到 'thumbnail' 信息,可以通过指定 'thumbnail' 子路径,将其提取到数据集。
var dsExample7 = new Spry.Data.JSONDataSet("../../data/json/object-03.js", { subPaths: [ "image", "thumbnail" ] });
注意多个子路径其实是一个字符串数组,包含在[]中,现在数据引用看起来是这样的:
{id} | {type} | {name} | {image.width} | {image.height} | {image.url} | {thumbnail.width} | {thumbnail.height} | {thumbnail.url} |
---|
使用数据集功能
作为一个Spry数据集, JSON数据集拥有所有基本数据集的功能。
例如:关闭缓存并使用唯一(distinct):
var ds1 = new Spry.Data.JSONDataSet("myfile.js", {path: "address.city", useCache:false, distinctOnLoad:true});
Spry的目标之一是区域独立于数据集类型。区域可以在JSON, XML 和 HTML 数据集之间互换。
Copyright © 2007. Adobe Systems Incorporated. All rights reserved.
汉化:booolee.cnblogs.com