锁定老帖子 主题:JSON 简介
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-05-10
charon 写道 ray_linn 写道 拿个TCPDump拦一下就可以看到了吧?
哪种是标准现在不能确定,等今年Json被提交到Javascript标准里才知道吧 貌似不可能把 '@12345678@' 这种方式的 datetime表示放到 javascript 标准里去,除非某天 javascript能根据这个字符串直接eval出一个Date对象来. Altas是这么处理的,Ajax.net据说改成了/\Date(2342423423)\/ |
|
返回顶楼 | |
发表时间:2007-05-11
刚试了一下,这个没效果,eval不支持嵌套啊
<script language="javascript"> var json = eval("({'someday':'eval(\\'new Date(75, 1, 16, 12, 0, 0)\\')'})"); alert(json.someday); </script> 只好改成: <script language="javascript"> var json = eval("({'someday':'new Date(75, 1, 16, 12, 0, 0)'})"); alert(eval(json.someday)); </script> |
|
返回顶楼 | |
发表时间:2007-05-11
这里也有一个简单的入门说明:
http://www.blogjava.net/kawaii/archive/2007/04/18/111503.html 在Json的官方网站提供了一个json.js 它提供了JSON对象,主要包括两个函数,用于JSON字符串和对象间的转换: var o = JSON.parse(jsonStr);//将JSON字符串转化成Javascript对象 var s = JSON.stringify(obj); //将Javascript对象转化成JSON字符串 有兴趣的朋友可以看看 |
|
返回顶楼 | |
发表时间:2007-05-11
sorphi 写道 <script language="javascript"> var json = eval("({'someday':'new Date(75, 1, 16, 12, 0, 0)'})"); alert(eval(json.someday)); </script> 不需要加引号,直接就是 var json = eval("({'someday':new Date(75, 1, 16, 12, 0, 0)})"); 一些python的json实现就是这么干的。 |
|
返回顶楼 | |
发表时间:2007-05-11
原来还可以这样啊,赞一个。ray_linn的入门贴导致我以为json数据结构中的元素只能是字符串呢,呵呵
那就好办了吧,利用javascript的标准类或者框架提供的类,类型缺乏问题是不是就好解决了? |
|
返回顶楼 | |
发表时间:2007-05-11
hexiaodong 写道 sorphi 写道 不错的启蒙帖(2me:-)
不过一看到 card.addresses[0].value 之类的,就担心太magic了。如果服务端采用非脚本语言开发,那么就需要对同样的model在服务端和客户端维护两套数据结构了。 为什么? 我们一直在前台用json,服务器端用hibernate 实体,而且数据结构完全一致的。 我貌似提了一个伪问题,我的原意是指数据结构的表现形式要维护两套。转换应该是不可避免的。 |
|
返回顶楼 | |
发表时间:2007-05-11
sorphi 写道 原来还可以这样啊,赞一个。ray_linn的入门贴导致我以为json数据结构中的元素只能是字符串呢,呵呵
那就好办了吧,利用javascript的标准类或者框架提供的类,类型缺乏问题是不是就好解决了? 问题是Date对象的表示方法本身不在json的规范里面。那么谁都可以定义一个Date的表示法。但只能在自己的实现中用,而因为Date本身的普遍性,结果json又变成一个有众多方言的东西了。 另外,new Date(...)这种方式的表示方法,用来给javascript eval是足够了,但是拿回来给后端服务器解析,就有点不爽了。但这个相对容易解决 |
|
返回顶楼 | |