Json 使用心得

JSON作为轻量级数据交换协议,受到了大家广泛的欢迎。

这两天做项目,用到了这个。

先说说技术选型,因为是个集成类的项目,但是同时需要支持Web android ios。综合技术平台支撑程度和技术的成熟性,同时考虑team 成员的技术背景,选择了JSON。

测试服务的发布,试用了gson,json-lib,jax-rs(cxf+spring).Struts2 也看了看,主要是和对方集成时对方使用了,并且出现了问题,才去研究的。 这估计也是java 讨厌的地方之一,open 所以实现太多,问题也会奇奇怪怪。

总体来说 java 侧,发布都不难。如果集成类项目建议jax-rs。读取简单用gson 和 json-lib 都好。gson 和 json-lib 准确说它们无法直接发布,一般借助servlet 或者其他web 框架发布。

碰到的问题:

jquery 跨域读取
先说说jquery几个函数,getjson,ajax,get,getscript。 这几个函数ajax是根的,参数最多也最复杂,但是这是根。建议先把这个函数搞清楚,再根据请求类型和请求的数据换别的函数。

异常提示:
Uncaught SyntaxError: Unexpected token :
说明:这个问题查了比较多资料,导致的原因比较多:html 写错了;json 数据格式不规范(双引号问题);
解决:重点察看ajax error 返回值。
比如我的 errorthrown 提示:jQuery18207671116073615849_1361933249616 was not called

第一反应,json格式问题。但是http response code 正常200;返回的数据解析json 也没问题。然后看数据格式 对方返回的content type 非json,建议对方换成applicaiton/json。问题依旧。

因为本地写过测试接口,没有问题。了解了对方发布机制,考虑可能是对方发布的问题。因为没有用过strus2发布,查了资料。http://blog.sina.com.cn/s/blog_6df7d3150100rmqh.html

建议对方增加参数。问题搞定。

个人认为Struts 发布不是很方便。如果用json-lib实现,需要在action里单独处理才能支持jsonp.


你可能感兴趣的:(jquery,json,Ajax)