在jsp页面怎么接收json字符串,然后怎么把json字符串转换成对象,再之怎么遍历json对象?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在jsp页面怎么接收json字符串,然后怎么把json字符串转换成对象,再之怎么遍历json对象?相关的知识,希望对你有一定的参考价值。

把json字符串转换成对象用ajax,jquery怎么做?以上的问题最好能给个例子说明下。回答的好分数可以再追加!!

用jquery的ajax

$.post("xxx.action",  参数名1: "值1", 参数名2: "值2" ,
   function(data)
     //data为返回的json字符串,这里转对象
     var json = eval("(" + data + ")");
     //遍历json
     for(var j in json) 
         var key = j;
         var value = json[j];
     
   );

json字符串怎么来

JSONObject json = new JSONObject();
json.put("参数名1", "值1");
json.put("参数名2", "值2");
return json.toJSONString();

这里需要用到一个jar包fastjson.jar 已经给你放到附件里面


追问

参数名1: "值1", 参数名2: "值2" ,这个是向后台发送的参数和值吗?值从哪里来?我用的struts2还需要像JSONObject这样做吗?

追答

如果你没有的话可以不用,这个是可选的,你用struts2是什么意思

追问

我说用struts2框架开发的话,还需要JSONObject吗?

追答

只要你能传json字符串随便用什么技术都行,这里只是给你一个思路而已,struts2框架和JSONObject没什么必要的联系。

参考技术A var data=['a':1,'b':'c','a':2,'b':'d'];
var json = JSON.parse(data);
for(var i=0;i<json.length;i++)
json[i].a

操作就随意了么,试试...前几天从后天往前台传json把我折腾残了...追问

你的JSON是哪里来的?你写的是把JSON对象转换成json字符串吧?

追答

是把json格式的字符串,转化成json对象...你见过字符串能点出属性来的么...
都忘了JSON哪来的了,JQuery哪个架包封好的...
难道是json-lib包...

参考技术B 这是ajax做的,里面报错 获取json,转化成对象,遍历
function getclass(obj)
loadtypesubject();
districtid = document.getElementById("districtId").value;
schoolid = document.getElementById("schoolId").value;
createXmlhttpRequest();
这里发送ajax请求
xmlhttp.open("get",
"multlink!getClassMessage?database=20130227155607281&districtid="
+ districtid + "&schoolid=" + schoolid + "&gradeid="
+ obj.value, true);
xmlhttp.send();
xmlhttp.onreadystatechange = statusClassChange;

// proxy loading the class message , this is callback function
function statusClassChange()
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
selectClass = document.getElementById("classId");
selectSubject = document.getElementById("paperId");
deleteOption(selectClass);
selectSubject.options.length = 0 ;
selectSubject.options.add(new Option("--总成绩--", "allmark"));
这里获取json的值
flagmessage = xmlhttp.responseText;
这里把json转换成对象
smobj = eval(flagmessage);
这里遍历对象属性
for ( var i = 0; i < smobj.length; i++)
flagname = smobj[i].classname;
flagid = smobj[i].classid;
option = createOption(flagid, flagname);
selectClass.appendChild(option);



这是一个N级联动的部分代码 ,应该能解决不的部分问题,这些代码本身没问题的,不会误导你追问

上面说是报错,下面又说没问题,到底有没有 问题?

这里获取json的值
flagmessage = xmlhttp.responseText;这一句是获取从action中传过来的json写法吧,所有从action传过来的json数据都是这样接收的吗?

追答

这是项目中的代码 ,没问题,打字打错了。接收的时候我是这么接收的。这是ajax的东西吧。这是比较通用的方法

java后台的json值怎么传给jsp页面,并进行遍历

首先看你的后台是用的什么。
1、servlet,把json放在request(session)对象里,然后返回,jsp在request里取。
2、框架,放在form表单里带回去,jsp页面用标签直接调用。

遍历的方式很多,《% %》的方式 或者《C:BEAN》等方式都可以

满意请采纳。追问

我后台是struts2 我就是想能不能直接用struts2直接遍历,不用js

追答

可以 直接把json对象放到form里就可以。

参考技术A 请求时后台代码(对json进行赋值)
JSONObject json = new JSONObject(); //json对象
JSONArray array = new JSONArray();//json数组
JSONObject jsonarticlecomment = null; //数组中需要放的对象
.....(这里我省略了用querycomment这个数组的获得过程)
Iterator iter = querycomment.iterate();-------iter是你需要遍历的对象组,这里从数据库取出来的
while (iter.hasNext())
jsonarticlecomment = new JSONObject();
jsonarticlecomment.put("id", "1"); //分别对这个数组中的对象进行赋值
array.add(jsonarticlecomment); //添加到jsonarray中

json.put("objarray", array); //把json数组保存到json对象中
PrintWriter pw = response.getWriter();
pw.print(json.toString()); //把json对象字符串化
pw.close();

取json中的数据(jquery请求)
var uri = "/comment/article.do?method=selArticlecomment";
var parameter = articlesrc:articlesrc,pages:pages; (参数)
var type = "json";
$.post(uri,parameter,function(data,textStatus)
var objarray= data.objarray; //返回的数据数组
for(var i = 0;i<objarray.length;i++)
alert(obj[i].id); //这个就是你存在对象数组中的的对象的字段值啦



,type);追问

但是我想用struts2标签取值 可以做到吗

追答

那就把json对象传不以字符串形式返回,直接放到session中或者request返回也可以啊!

参考技术B 通过 JSONObject类就可以了
首先 你把这几个包 下下来 放到你项目。如果有就不要下了:

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
像你这种是数据形式 就通过 JSONArray 如:
JSONArray datasJson = JSONArray.fromObject(datas);最好把datas toString 一下
参考技术C json
是一个特殊的集合对象,后台new出一个json对象,赋值,把这个对象送给前台,前台解析就可以了
参考技术D var arr = eval('('+jsol+')')//arr是个数组。这样你就可以for循环就进行遍历了

以上是关于在jsp页面怎么接收json字符串,然后怎么把json字符串转换成对象,再之怎么遍历json对象?的主要内容,如果未能解决你的问题,请参考以下文章

怎么用jsp生成json格式数据,然后用js又怎样读取其数据?

前端页面显示带格式的json数据

后台有两个List都转换为json格式数据返回给前台JSP页面 页面上怎么区分开这两个List的数据

java 怎么把对象集合转换成json

怎么从servlet传递一个值,然后在一个jsp页面得到这个值

jsp页面中,如何使用jquery拼接json格式的数据