var policy = {"Plane":{"Full Life Cover"}, "Description":{"The best life insurance plan"}, "Term":{"20 years"}}
将此字符串粘贴到 HTML 页面的标题部分中,然后编写以下警报:
alert(policy.Plan)
如果在任何支持 JavaScript 的浏览器中查看此页面,您都会看到显示策略计划的警报。
示例
为了演示 JSON 的性能,我们来看一个有 vehicle 对象列表的 person 对象和一个可以拥有一台或多台车辆的 person 对象。每台车辆都有以下属性:
品牌 注册码 CC 浏览器 UI 应当允许用户添加多台具有优秀应用性能的车辆(通常为固有要求)。每个属性都有一些与之关联的限制或验证规则。您需要指定以下规则:
品牌名称 品牌名称决不能包含数字。 品牌名称最多可包含两个单词,中间可加一个空格。 注册码 注册码必须全都是数字。 CC CC 必须全都是数字。 CC 的最小值为 50,最大值为 5000。 将有三个与车辆属性相对应的输入字段,用户可在其中输入信息。接下来,您将看到如何将验证消息分组到 JSON 组中以及如何访问这些验证消息。
传统方法
现在,当用户输入的车辆数据为 40CC 时,程序必须显示一条消息,说明输入的数据不在有效的 CC 范围内。您可以用 清单 1 中的代码简单地显示这条消息:
var vehicleValidationsMetadata = { "BrandName":{ "CanContainDigits":{false}, "MaxWords":{2}, "FormatMessage":{"Brand Name cannot contain digits."}, "WordLimitMessage":{"Brand Name cannot contain more than two words"} }, "RegistrationNumber":{ "CanContainAlphabets":{false}, "CanContainDigits":{"true"}, "FormatMessage":{"Registration Number can contain only digits."} }, "CC":{ "minCC":{50}, "maxCC":{5000}, "FormatMessage": {"CC can only be numeric"}, "RangeMessage":{"CC can be within range of 50 and 5000"} } }
服务器必须生成整个字符串,第一行和最后一行除外,因为当前的用户语言环境可能要求使用这些消息(并且只有服务器端代码能完成这项工作)。在这里,需要注意的一点是此元数据对象仅用于验证车辆。更理想的情况是将 vehicle 元数据对象封装到 person 元数据对象中。那样,您就不需要再创建另一个 JavaScript 变量,而只需将该元数据对象包含到 person 元数据对象中。
function validateVehicleData() { var brandName = //get brand name from form field var registrationNumber = //get Registration Number from form field. var CC = //get CC from form field var brandNameTokens = brandName.split(' '); if(brandNameTokens.length > vehicleValidationsMetadata.BrandName.MaxWords) { alert(vehicleValidationMessages.BrandName.WordLimitMessage); } . . . if((!vehicleValidationsMetadata.RegistrationNumber.CanContainAlphabets) && isNaN(parseInt(registrationNumber))) { alert(vehicleValidationMessages.RegistrationNumber.FormatMessage); } var ccNum = parseInt(CC); if(ccNum < vehicleValidationMessages.CC.minCC || ccNum > vehicleValidationMessages.CC.maxCC) { alert(vehicleValidationMessages.CC.RangeMessage); } }
function addVehicleData() { var brand = //get vehicle brand; var regNo = //get registration number; var cc = //get cc;
vehicleData[vehicleData.length] = new Object(); vehicleData[vehicleData.length].brandName = new Object(); vehicleData[vehicleData.length].brandName = brand; //same way update other two properties }
function addVehicleData() { if(vehicleData.length == vehicleValidationsMetadata.MAX_OCC-1) { alert(vehicleValidationsMetadata.MAX_OCC_MSG); } //Everything else is the same }
当用户提交一个页面时调用的函数实际上用于验证最少的出现次数。这种方法的最大好处是屏幕不需要刷新以输入新车辆数据。提供此类静态屏幕曾经是 Ajax 技术的主要目标,而您现在用 JSON 也能完成此目标。这是关于更新 JSON 数据对象和通过 JavaScript 处理 HTML DOM 树的全部内容。用户响应时间是最小值,因为所有操作仅在客户端上执行。您可以使用 JSON 来为应用程序提供 Ajax 功能。