在做项目时,要向ocx控件下发命令,就要在js中得到java中的对象,然后拼成一种格式,下发下去。。。当对象是一个时比较简单,但如果对象是一个数组时,就略显麻烦了。
开始我以为有简单的方式,可以直接进行内容的转化,后来发现不可以,网上说js与java没有桥接的东西,所以呢:
我的解决方案是:在action层,将java的对象数组转化为json串,而在js中,再把json转化为数组对象。
1.将java的对象数组转化为json串:
要用到两个类:
net.sf.json.jsonobject
net.sf.json.jsonarray
//将每个vehicle对象拼接为json格式的对象,用于命令下发
jsonobject json = jsonobject.fromobject(v); //v即对象
jsonarray.add(json);
//system.out.println(jsonarray.tostring());
//用于命令下发
sendcommandlist = jsonarray.tostring();
将其放在for循环中。
2.js将其转化为对象数组:
//注意:此时得到的是json串。
//注意:要加上escapejavascript="false" escape="false" ,否则传过来json字符串中的引号都会被解析成为"
var szjsonstr = '<s:property escapejavascript="false" escape="false" value="sendcommandlist" />';
最后:
//把json字符串转化为对象数组
var addvehiclearray = eval(szjsonstr);
在用的时候,就直接用addvehiclearray[i].vehicletype;即可以了。。。。。。
扩展:
jsonobject与jsonarray的使用
1.jar包简介
要使程序可以运行必须引入json-lib包,json-lib包同时依赖于以下的jar包:
commons-lang.jar
commons-beanutils.jar
commons-collections.jar
commons-logging.jar
ezmorph.jar
json-lib-2.2.2-jdk15.jar
2.jsonobject对象使用
json-lib包是一个beans,collections,maps,java arrays 和xml和json互相转换的包。在本例中,我们将使用jsonobject类创建jsonobject对象,然后我们打印这些对象的值。为了使用jsonobject对象,我们要引入"net.sf.json"包。为了给对象添加元素,我们要使用put()方法。
2.1.实例1
package jsontest;
import net.sf.json.jsonarray;
import net.sf.json.jsonobject;
public class jsonobjectsample {
// 创建jsonobject对象
private static jsonobject createjsonobject() {
jsonobject jsonobject = new jsonobject();
jsonobject.put("username", "huangwuyi");
jsonobject.put("sex", "男");
jsonobject.put("qq", "413425430");
jsonobject.put("min.score", new integer(99));
jsonobject.put("nickname", "梦中心境");
return jsonobject;
}
public static void main(string[] args) {
jsonobject jsonobject = jsonobjectsample.createjsonobject();//静待方法,直接通过类名+方法调用
// 输出jsonobject对象
system.out.println("jsonobject:" + jsonobject);
// 判读输出对象的类型
boolean isarray = jsonobject.isarray();
boolean isempty = jsonobject.isempty();
boolean isnullobject = jsonobject.isnullobject();
system.out.println("是否为数组:" + isarray + ", 是否为空:" + isempty
+ ", isnullobject:" + isnullobject);
// 添加属性,在jsonobject后面追加元素。
jsonobject.element("address", "福建省厦门市");
system.out.println("添加属性后的对象:" + jsonobject);
// 返回一个jsonarray对象
jsonarray jsonarray = new jsonarray();
jsonarray.add(0, "this is a jsonarray value");
jsonarray.add(1, "another jsonarray value");
jsonobject.element("jsonarray", jsonarray);
//在jsonobject后面住家一个jsonarray
jsonarray array = jsonobject.getjsonarray("jsonarray");
system.out.println(jsonobject);
system.out.println("返回一个jsonarray对象:" + array);
// 添加jsonarray后的值
// {"username":"huangwuyi","sex":"男","qq":"413425430","min.score":99,"nickname":"梦中心境","address":"福建省厦门市","jsonarray":["this is a jsonarray value","another jsonarray value"]}
system.out.println("结果=" + jsonobject);
// 根据key返回一个字符串
string username = jsonobject.getstring("username");
system.out.println("username==>" + username);
// 把字符转换为 jsonobject
string temp = jsonobject.tostring();
jsonobject object = jsonobject.fromobject(temp);
// 转换后根据key返回值
system.out.println("qq=" + object.get("qq"));
}
}
输出结果
jsonobject:{"username":"huangwuyi","sex":"男","qq":"413425430","min.score":99,"nickname":"梦中心境"}
是否为数组:false, 是否为空:false, isnullobject:false
添加属性后的对象:{"username":"huangwuyi","sex":"男","qq":"413425430","min.score":99,"nickname":"梦中心境","address":"福建省厦门市"}
{"username":"huangwuyi","sex":"男","qq":"413425430","min.score":99,"nickname":"梦中心境","address":"福建省厦门市","jsonarray":["this is a jsonarray value","another jsonarray value"]}
返回一个jsonarray对象:["this is a jsonarray value","another jsonarray value"]
结果={"username":"huangwuyi","sex":"男","qq":"413425430","min.score":99,"nickname":"梦中心境","address":"福建省厦门市","jsonarray":["this is a jsonarray value","another jsonarray value"]}
username==>huangwuyi
qq=413425430
2.2.实例2.
package jsontest;
import net.sf.json.jsonarray;
import net.sf.json.jsonobject;
public class jsontest {
public static void main(string args[])
{
jsonobject jsonobj0 = new jsonobject();
jsonobject jsonobj = new jsonobject();
jsonobject jsonobj2 = new jsonobject();
jsonobject jsonobj3 = new jsonobject();
jsonarray jsonarray = new jsonarray();
//创建jsonobj0
jsonobj0.put("name0", "zhangsan");
jsonobj0.put("sex1", "female");
system.out.println("jsonobj0:"+jsonobj0);
//创建jsonobj1
jsonobj.put("name", "xuwei");
jsonobj.put("sex", "male");
system.out.println("jsonobj:"+jsonobj);
//创建jsonobj2,包含两个条目,条目内容分别为jsonobj0,jsonobj1
jsonobj2.put("item0", jsonobj0);
jsonobj2.put("item1", jsonobj);
system.out.println("jsonobj2:"+jsonobj2);
//创建jsonobj3,只有一个条目,内容为jsonobj2
jsonobj3.element("j3", jsonobj2);
system.out.println("jsonobj3:"+jsonobj3);
//往jsonarray中添加jsonobject对象。发现jsonarray跟jsonobject的区别就是jsonarray比jsonobject多中括号[]
jsonarray.add(jsonobj);
system.out.println("jsonarray:"+jsonarray);
jsonobject jsonobj4 = new jsonobject();
jsonobj4.element("weather", jsonarray);
system.out.println("jsonobj4:"+jsonobj4);
}
}
输出结果:
jsonobj0:{"name0":"zhangsan","sex1":"female"}
jsonobj:{"name":"xuwei","sex":"male"}
jsonobj2:{"item0":{"name0":"zhangsan","sex1":"female"},"item1":{"name":"xuwei","sex":"male"}}
jsonobj3:{"j3":{"item0":{"name0":"zhangsan","sex1":"female"},"item1":{"name":"xuwei","sex":"male"}}}
jsonarray:[{"name":"xuwei","sex":"male"}]
jsonobj4:{"weather":[{"name":"xuwei","sex":"male"}]}
以上这篇js接收并转化java中的数组对象的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
更多js接收并转化java中的数组对象的方法。