浏览 34024 次
锁定老帖子 主题:JSON 简介
该帖已经被评为良好帖
作者 正文
   发表时间:2007-05-10  
charon 写道
ray_linn 写道
拿个TCPDump拦一下就可以看到了吧?
哪种是标准现在不能确定,等今年Json被提交到Javascript标准里才知道吧


貌似不可能把 '@12345678@' 这种方式的 datetime表示放到 javascript 标准里去,除非某天 javascript能根据这个字符串直接eval出一个Date对象来.


Altas是这么处理的,Ajax.net据说改成了/\Date(2342423423)\/
0 请登录后投票
   发表时间: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>


0 请登录后投票
   发表时间: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字符串
有兴趣的朋友可以看看
0 请登录后投票
   发表时间: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实现就是这么干的。
0 请登录后投票
   发表时间:2007-05-11  
原来还可以这样啊,赞一个。ray_linn的入门贴导致我以为json数据结构中的元素只能是字符串呢,呵呵

那就好办了吧,利用javascript的标准类或者框架提供的类,类型缺乏问题是不是就好解决了?
0 请登录后投票
   发表时间:2007-05-11  
hexiaodong 写道
sorphi 写道
不错的启蒙帖(2me:-)


不过一看到
card.addresses[0].value
之类的,就担心太magic了。如果服务端采用非脚本语言开发,那么就需要对同样的model在服务端和客户端维护两套数据结构了。



为什么?
我们一直在前台用json,服务器端用hibernate 实体,而且数据结构完全一致的。


我貌似提了一个伪问题,我的原意是指数据结构的表现形式要维护两套。转换应该是不可避免的。
0 请登录后投票
   发表时间:2007-05-11  
sorphi 写道
原来还可以这样啊,赞一个。ray_linn的入门贴导致我以为json数据结构中的元素只能是字符串呢,呵呵

那就好办了吧,利用javascript的标准类或者框架提供的类,类型缺乏问题是不是就好解决了?



问题是Date对象的表示方法本身不在json的规范里面。那么谁都可以定义一个Date的表示法。但只能在自己的实现中用,而因为Date本身的普遍性,结果json又变成一个有众多方言的东西了。
另外,new Date(...)这种方式的表示方法,用来给javascript eval是足够了,但是拿回来给后端服务器解析,就有点不爽了。但这个相对容易解决
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics