- 浏览: 160705 次
- 性别:
- 来自: 重庆
文章分类
最新评论
-
坏猪猪:
Document doc = Jsoup.connect(ur ...
android中jsoup解析html的几个例子 -
我很温柔但是不丑:
你好。看了您的例子,实践了一下,有问题啊?没有解析出来数据?怎 ...
android中jsoup解析html的几个例子
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
JSON模块综述:
为了是脚本尽可能的小,JSON模块被分成了以下几个部分:
json-parse,json-stringify,json
json-parse:解析JSON字符串。
json-stringify:将js对象转化为JSON字符串。
json:同时实现以上两者。
解析JSON字符串到本地JS值
YUI().use('json-parse', function (Y) { var jsonString = '{"products":['+ '{"id":1,"price":0.99,"inStock":true,"name":"grapes"},'+ '{"id":2,"price":3.5,"inStock":false,"name":"passion fruit"},'+ '{"id":3,"price":2.5,"inStock":true,"name":"bananas"}'+ ']}'; // JSON.parse 当jsonString为无效的JSON值时,要捕获错误。 try { var data = Y.JSON.parse(jsonString); } catch (e) { alert("Invalid product data"); } //使用JSON值。 for (var i = data.products.length - 1; i >= 0; --i) { var p = data.products[i]; if (p.price < 1) { p.price += 1; // Price increase! } } });
使用可选的“reviver ”参数:
注意名值对:key——var
这个可选的第二个参数,如果返回reviver的值是没有定义,那么这个key将被忽略。
YUI().use('json-parse', function (Y) { var jsonString = '{"products":['+ '{"id":1,"price":0.99,"inStock":true,"name":"grapes"},'+ '{"id":2,"price":3.5,"inStock":false,"name":"passion fruit"},'+ '{"id":3,"price":2.5,"inStock":true,"name":"bananas"}'+ ']}'; // 移除所有没有库存,name为 bananas的条目,以及格式化price。 var currencySymbol = '$'; var reviver = function (key,val) { if (key === 'inStock' && !val) { return undefined; } else if (val === 'bananas') { return undefined; } else if (key === 'price') { val += val % 1 ? "0" : ".00"; var pIdx = val.indexOf('.'); val = pIdx ? "0" + val : val; val = currencySymbol + val.substr(0,pIdx + 3); } return val; }; // 如果是无效的JSON,将抛出一个异常。 try { var data = Y.JSON.parse(jsonString,reviver); } catch (e) { alert("Invalid product data"); } // 使用处理过的数据。 alert(data.products.length); // 1 alert(data.products[0].price); // $0.99 });
不使用 eval:
eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
参见:http://www.w3school.com.cn/js/jsref_eval.asp
使用JSON模块的parse方法将更加安全:
// 不安全 var data = eval('(' + shouldBeJsonData + ')'); // 安全 var data = Y.JSON.parse(shouldBeJsonData);
从JS对象中创建JSON字符串
为了把JS对象(或者是任何一个允许的值)转换为一个JSON字符串,传递对象到Y.JSON.stringify并且捕获返回值。
YUI().use("json-stringify", function (Y) { var myData = { troop : [ { name: "Ashley", age: 12 }, { name: "Abby", age:9 } ] }; var jsonStr = Y.JSON.stringify(myData); alert(jsonStr); // {"troop":[{"name":"Ashley","age":12},{"name":"Abby","age":9}]} });
使用一个白名单:
为了仅序列号一个固定的名的子集,该函数提供了一个key名数组作为stringify的第二个参数。
YUI().use("json-stringify", function (Y) { var myData = { troop : [ { name: "Ashley", age: 12 }, { name: "Abby", age:9 } ] }; var jsonStr = Y.JSON.stringify(myData); alert(jsonStr); // {"troop":[{"name":"Ashley","age":12},{"name":"Abby","age":9}]} });YUI().use("json-stringify", function (Y) { // 对象记录集 var records = [ {id:1, name: "Bob", age: 47, favorite_color: "blue"}, {id:2, name: "Sally", age: 30, favorite_color: "mauve"}, {id:3, name: "Tommy", age: 13, favorite_color: "black"}, {id:4, name: "Chaz", age: 26, favorite_color: "plaid"} ]; // 创建一个字符才仅仅包含id和age; var jsonStr = Y.JSON.stringify(records,["id","age"]); alert(jsonStr); // [{"id":1,"age":47},{"id":2,"age":30},{"id":3,"age":13},{"id":4,"age":26}] });
使用一个自定义的”replacer“:
YUI().use("json-stringify", function (Y) { // 记录集 var records = [ {id:1, name: "Bob", birthdate: "2/27/1964", favorite_color: "blue"}, {id:2, name: "Sally", birthdate: "9/30/1983", favorite_color: "mauve"}, {id:3, name: "Tommy", birthdate: "3/11/1990", favorite_color: "black"}, {id:4, name: "Chaz", birthdate: "5/22/1975", favorite_color: "plaid"} ]; // 将id 和 favorite_color加入黑名单,将生日转换成为UTC格式。 var replacer = function (key,val) { // 将id 和 favorite_color加入黑名单 if (key === 'id' || key === 'favorite_color') { return undefined; // 将生日转换成为UTC格式。 } else if (key === 'birthdate') { var d = new Date(), bd = val.split('/'); d.setFullYear(bd[2],bd[0]-1,bd[1]); d.setHours(0,0,0); return d; } return val; }; var jsonStr = Y.JSON.stringify(records,replacer); alert(jsonStr); // [{"name":"Bobby","birthdate":"1964-02-28T08:00:00Z"},{"name":"Sally","birthdate":"1983-09-30T07:00:00Z"},{"name":"Tommy","birthdate":"1990-03-11T08:00:00Z"},{"name":"Chaz","birthdate":"1975-05-23T07:00:00Z"}] });
格式化JSON输出:
YUI().use('json-stringify', function (Y) { var fam = { family: "Franklin", children: [ "Bob", "Emily", "Sam" ] }; //格式化:用四个空格。 var jsonStr = Y.JSON.stringify(fam,null,4); alert(jsonStr); /* { "family": "Franklin", "children": [ "Bob", "Emily", "Sam" ] } */ });
捕获JSON错误
同parse,stringify也需要捕获错误。
循环引用?
try { // BOOM Y.JSON.parse("{'this string': is, not_valid: ['J','S','O','N'] }"); } catch (e) { alert("A string may eval to the same object, but might not be valid JSON"); } // This is safe to stringify var myData = { troop : [ { name: "Ashley", age: 12 }, { name: "Abby", age:9 } ] }; // Create a cyclical reference myData.troop[0]["NEWKEY"] = myData; try { // BOOM jsonStr = Y.JSON.stringify(myData); } catch (e) { alert("Cyclical references can sneak in. Remember to wrap stringify."); }
Notes about current native JSON support
发表评论
-
yui3:widget 例子_widget-extend
2011-06-26 16:07 2601<!DOCTYPE HTML PUBLIC &qu ... -
yui3:widget
2011-06-18 11:36 3279Widget 类包含什么? widget类的结构和 ... -
YUI3:node2
2011-06-18 11:23 1YUI的Node功能为获取、 ... -
YUI3:plugin
2011-06-18 10:22 1470插件让你可以无侵入地 ... -
YUI3:Base
2011-06-16 20:39 1583Base类被设计成基础类 ... -
YUI3:Attribute
2011-06-16 10:30 1551YUI的Attribute功能允 ... -
YUI 3:Event
2011-06-15 22:23 15591. 要使用Event,首先要引入YUI3的种子文件: &l ... -
YUI3:Node
2011-06-15 15:59 2238YUI的Node功能为获取、创建、操作DOM节点提供很易懂的方 ... -
yui3 :Get 例子
2011-06-15 15:43 1342Getting a Script Node with JSON ... -
YUI:globle object
2011-06-13 11:52 1678YUI模块是YUI3中的单一核 ... -
YUI3:GET
2011-06-12 22:25 1715Get 工具提供了一个,在 ... -
YUI3:DataSource
2011-06-12 21:53 1344DataSource 工具,通过广泛支持的协议,为从不同的资源 ... -
YUI3:DataSchema
2011-06-12 20:57 924DataSchema Utility 应用一个给定的模式 ,以 ... -
YUI3:Cooke
2011-06-12 16:43 1278YUI Cookie工具为与cookies ... -
yui3 :datatype
2011-06-12 12:02 2143DataType工具为数据, ... -
YUI3:cache
2011-06-12 10:14 1278Cache 工具为存储名值对到本地JavaScript内存提供 ... -
YUI 3 周边
2011-06-11 16:46 11621.跨域请求:cross-domain 初步体验“AJAX不 ... -
YUI 3 :IO
2011-06-10 11:46 2966YUI IO是一个通讯工具,用于数据获取和内容更新,它使用X ...
相关推荐
(尚未稳定)YUI3项目的Yeoman发电机安装sudo npm install -g generator-yui3建立专案yo yui3 awesomeProject.generator-yui3.json 允许您覆盖默认配置{ "project" : "awesomeProject", "lang" : ["fr", "en", "es",...
JavaScript YUI 2.8 和 DataTable 是 Yahoo! UI Library 的一部分,它提供了一种强大的方式来展示和操作表格数据。jQuery form 插件则用于处理表单的异步提交,通常用于实现无刷新的数据更新。在本文中,我们将深入...
3. **处理JSON数据**:YUI提供了解析JSON数据的方法`Y.JSON.parse()`,将JSON字符串转换为JavaScript对象,方便在前端操作。 4. **更新UI**:根据接收到的JSON数据,使用YUI的DOM操作和UI组件来更新页面内容。例如...
Struts2、JSON和YUI是开发Web应用程序时常用的三个技术。它们的组合可以创建功能丰富、用户体验良好的富客户端(Rich Client)应用。下面将详细解释这三个技术以及如何结合使用来构建这样的应用。 **Struts2**:...
3. **数据管理**:YUI 2.9提供了DataSource组件,用于处理数据请求、缓存和格式化。配合Connection Manager,可以实现与服务器的数据交换,支持JSON、XML等多种数据格式。 4. **国际化与本地化**:YUI 2.9支持多...
- JSON:JSON对象的序列化和反序列化,便于数据交换。 - Calendar:日历组件,可以方便地集成到网页中,用于日期选择。 - Drag and Drop:拖放功能,使得用户可以通过鼠标操作移动元素。 - Container:容器组件,...
3. **表示复杂数据结构**:JSON不仅可以表示单个对象,还能表示数组、列表等复杂数据结构,如`{id:1,name:'zhangsan'}`和`[{id:1,name:'zhangsan'},{id:2,name:'lisi'}]`,而XML则需要使用更多的标签层次来表达同样...
- **api**:这部分可能包含了YUI 3.10.3的API定义,可能以JSON或其他形式存在,供开发者查阅或用于自动化工具。 - **releasenotes**:发布说明文件,详细列出了3.10.3版本相对于上一版本的改进、新增功能和已知问题...
而在3.1.2版本中,YUI的`xhr`模块也进行了优化,支持多种类型的HTTP请求,如GET、POST等,并提供了处理JSON、XML等多种数据格式的能力。 对于UI组件,YUI 3.1.2提供了诸如`button`、`checkbox`、`slider`等常见的UI...
同时,YUI3的`JSONP`模块则用于跨域数据获取,这对于获取服务器上的JSON数据非常有用。 **响应式设计** 虽然YUI3本身并不直接支持响应式设计,但它提供了丰富的工具和API,可以帮助开发者构建适应不同屏幕尺寸和...
1. **核心库(Core)**:这是YUI的基础,提供事件处理、DOM操作、CSS样式处理、JSON解析等基础功能。它使得开发者能够更方便地进行页面交互和元素操作。 2. **控制台(Console)**:这是一个调试工具,用于在浏览器...
7. **JSON和XML处理**:YUI 3 提供了处理JSON和XML数据的工具,方便在JavaScript中解析和序列化数据。 8. **国际化与本地化**:YUI 3 支持多语言环境,提供国际化和本地化功能,使应用程序能够适应不同地区的用户...
`YAHOO.widget.DataSource`则用于管理数据源,它可以与各种数据类型(如XML、JSON、CSV等)进行交互,并且可以配合`YAHOO.util.Connect`进行数据加载和刷新。 1. **YAHOO.util.Connect** - `YAHOO.util.Connect....
3. **DOM操作** Node模块提供了便捷的DOM操作接口,可以快速地选取、创建、修改DOM元素,增强了JavaScript对HTML文档的操作能力。 4. **CSS样式管理** YUI的StyleSheet模块允许开发者动态修改CSS样式,实现页面...
3. **YUI Event System**:强大的事件系统支持事件监听和分发,使得开发者可以轻松响应用户交互和页面变化。 4. **YUI DOM utilities**:提供了丰富的 DOM 操作方法,如选择元素、修改属性、添加/删除样式等,简化...
3. **事件处理**:YUI的事件系统允许开发者方便地绑定和解绑事件,处理用户交互。YUI事件模型兼容了多种浏览器,解决了跨浏览器的事件处理问题。 4. **动画效果**:YUI的Animation模块提供了创建复杂动画效果的能力...
3. **初始化YUI**:调用`YUI().use()`方法初始化YUI,并传入需要的模块。 4. **编写代码**:在回调函数中编写具体的应用逻辑,使用YUI提供的API。 **四、YUI与其他JavaScript库的比较** YUI与jQuery、Dojo、...
此外,YUI 还提供了很多实用工具,如 JSON 解析和序列化、日期处理、字符串操作等,大大提高了开发效率。同时,YUI 社区活跃,有大量的开发者贡献插件和扩展,丰富了 YUI 的功能。 总的来说,Yahoo YUI 2.7 是一款...
YUI的IO模块支持Ajax请求,可以发送GET、POST等HTTP请求,处理JSON、XML等多种数据格式。例如,`Y.io('/api/data', { method: 'POST', data: JSON.stringify(data), on: { success: function(id, o) { /* 处理成功回...
6. **数据和JSON**:`Y.JSON`模块提供了将JavaScript对象转换为JSON字符串,以及解析JSON数据的功能。这在与服务器进行数据交换时非常关键。 7. **AJAX和IO**:`Y.io`接口用于处理异步请求,如GET和POST,与服务器...