Json 使用心得
JSON作为轻量级数据交换协议,受到了大家广泛的欢迎。
这两天做项目,用到了这个。
先说说技术选型,因为是个集成类的项目,但是同时需要支持Webandroidios。综合技术平台支撑程度和技术的成熟性,同时考虑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是根的,参数最多也最复杂,但是这是根。建议先把这个函数搞清楚,再根据请求类型和请求的数据换别的函数。
异常提示:
UncaughtSyntaxError:Unexpectedtoken:
说明:这个问题查了比较多资料,导致的原因比较多:html写错了;json数据格式不规范(双引号问题);
解决:重点察看ajaxerror返回值。
比如我的errorthrown提示:jQuery18207671116073615849_1361933249616wasnotcalled
第一反应,json格式问题。但是httpresponsecode正常200;返回的数据解析json也没问题。然后看数据格式对方返回的contenttype非json,建议对方换成applicaiton/json。问题依旧。
因为本地写过测试接口,没有问题。了解了对方发布机制,考虑可能是对方发布的问题。因为没有用过strus2发布,查了资料。http://blog.sina.com.cn/s/blog_6df7d3150100rmqh.html
建议对方增加参数。问题搞定。
个人认为Struts发布不是很方便。如果用json-lib实现,需要在action里单独处理才能支持jsonp.