锁定老帖子 主题:JSON使用注意
精华帖 (0) :: 良好帖 (1) :: 新手帖 (7) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-16
最后修改:2009-12-18
使用json的一些注意事项: 1.加入apache commons必要的包,不然要报错 commons-beanutils commons-collections commons-lang commons-logging ezmorph 以及json的包 2.json简单理解成一个key value的数据结构即可,根据key可以找到value,其实质是对字符串的转换。
3.JSON 还可以表示一个数组对象,使用 Object 对象在 JSON 中是用 参考:http://www.ibm.com/developerworks/cn/web/wa-lo-json/
4.调用eval()方法可以将一个json字符串转换为一个json对象。eval函数非常快速。它可以编译执行任何JavaScript程序,因此产生了安全性问题。当使用可信任与完善的源代码时才可以使用eval函数。
5.调用parse()方法可以获得更高的安全性和更快的处理速度。JSON解析器只能辨识JSON文本,拒绝所有脚本。提供了本地JSON支持的浏览器的JSON解析器将远快于eval函数。
6.调用stringify()方法可以将一个json对象转换为一个json字符串。SON stringifier进行反向操作,可以把JavaScript数据结构转换为JSON文本。JSON不支持循环数据结构,因此应小心不要为JSON stringifier提供循环结构。比如一个VO里面嵌套了另一个VO,而这个VO又嵌套了其他VO。var myJSONText = JSON.stringify(myObject, replacer); 如果stringify函数发现一个带有toJSON方法的对象,它将执行此方法,并且返回产生的值。这样一个对象就可以决定自己的JSON表现。
7.json中的替换函数 一个替换函数(reviver function)做为可选参数被最终结果的每一级的键(key)与值(value)调用。 每个值都将被替换函数的值代替。这可以用来将一般的类改变成伪类的实例,或者将日期字符串转变为日期对象。(http://www.dreamdu.com/blog/2008/10/19/json_in_javascript/) myData = JSON.parse(text, function (key, value) { var type; if (value && typeof value === 'object') { type = value.type; if (typeof type === 'string' && typeof window[type] === 'function') { return new (window[type])(value); } } return value; }); 如果没有提供数组或替代函数,一个用于忽略被集成的属性的可选替代函数将被提供。如果想要所有被继承的属性,可以提供一个简单的替换函数: var myJSONText = JSON.stringify(myObject, function (key, value) { return value; }); 8.不能确定的数量将被替换为null。为了替代其它的值,可以像下面一样使用替换(replacer)函数 function replacer(key, value) { if (typeof value === 'number' && !isFinite(value)) { return String(value); } return value; }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-12-18
http://www.json.org
Java的JSON包有好几个。最简的那个是不需要带Apache包的。 你用的应该是http://json-lib.sourceforge.net/这里的json-lib |
|
返回顶楼 | |
发表时间:2009-12-18
最后修改:2009-12-18
使用json的一些注意事项:
1.加入apache commons必要的包,不然要报错 commons-beanutils commons-collections commons-lang commons-logging ezmorph 以及json的包 用了json-lib包的时候 才需要导吧。。 parse() stringify() 这2个方法都是json.js里才有的方法哦。。说说清楚吗 eval()才是JavaScript自有方法 |
|
返回顶楼 | |
发表时间:2009-12-21
搭车请问一下
一个类实现了那个JSONString接口 用什么样的方法产生序列化后的字符串比较好呢? 我现在是在toJSONString方法里new一个JSONObject然后手动put进去,感觉这样灵活性太差,用反射遍历字段的话性能上会不会有影响呢? |
|
返回顶楼 | |
浏览 7027 次