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

posted @ 2007-05-30 17:57  电电儿  阅读(1886)  评论(2编辑  收藏  举报