目录
————————————————————————————————
更新:
对于JSON的读取,可以看一下我的另外一篇博客。
——————————————————————————————
必要工作:在servlet中使用JSONArray的六件套:
1.commons-lang.jar 2.commons-beanutils.jar 3.commons-collections.jar 4.commons-logging.jar 5.ezmorph.jar 6.json-lib-2.2.2-jdk15.jar 搜索到可以用使用Maven来进行包的依赖查询和管理,养成良好习惯,虽然我没用过……但是以后会尝试使用。 |
下载链接:点击这里,不见了请评论留言
我们在页面中读取:测试代码如下:
读取效果:
测试一:
前提:后台servlet中的JSONArray由ArrayList转换而来,没有tostring();
ArrayList list = RC.某个方法返回ArrayList();
JSONArray jsonDocumentList = JSONArray.fromObject(list);
前提2:当ajax中没有
dataType:"json",
读取结果:
这个结果中:
前七个【object Object】是【data】的结果,即json形式
第八个【object Object】是【data[0]】的结果,即json形式
直接【data.属性名】以及【data[n].length】是得不到数据的
【data[n].属性名】以及【data.length】才能得到数据。这是正确的使用方式
测试二:
前提变更:servlet中不变,但是把ajax的数据返回形式变更(注释掉dataType):
结果:
是不是很神奇?
此时的结果返回的是一堆字符串,而且是以数组的形式来保存
【data[0]】则会变成其中的"["号,【data.length】也变成了384.
测试三:
前提变更:
如果把servlet中的返回的形式改掉(加了.toString方法),且ajax依然存在dataType的指定(json):
servlet:
JSONArray jsonDocumentList = JSONArray.fromObject(list.toString());
ajax:
dataType:"json",
结果:
会直接进入到error回调函数的结果中。不会执行success回调函数。
最后进行一次测试,条件变更:
注释掉dataType,并且把servlet中进行.toString:
结果: