用java程序获取js里数组的数据
各位大虾,我现在要用java程序获取js中一部分数组的数据,请问有什么方法,数组如下:
ds_array[471] = { code:"DS471", title:"Certain Methodologies and their Application to Anti-Dumping Proceedings Involving China", origin:"CHN", destination:"USA", start_date:"2013/12/03", subject:"", short_title:"", agreement:"", update_date:"2013/12/03", status:"ST1#2013_12_03", third_party:"", reports_adopted:"false"};
ds_array[470] = { code:"DS470", title:"Anti-Dumping and Countervailing Duty Investigations on Certain Paper Products from Indonesia", origin:"IDN", destination:"PAK", start_date:"2013/11/27", subject:"G112", short_title:"", agreement:"A9_1102#A9_890#A9_855#A9_1106#A9_858#A6_1#A6_536#A6_241#A20_379#A20_425#A20_676#A20_680#A20_543", update_date:"2013/11/27", status:"ST1#2013_11_27", third_party:"", reports_adopted:"false"};等等,里面全是键值对,开始考虑用json,但是json需要封装对象,这些数组里的键又不一致,所以没有办法封装对象,json也就用不成了。而且据我了解键值对应该是“code”:"DS471"这样两边都有双引号的,所以这些数组里又不像键值对,请问各位大神我需要怎么获取里面的数据啊
[解决办法]
不管用什么获取,你获取之后,都会因为键值不同而导致代码复杂度更高啊。
所以这个并不是不能使用json的原因。
你这本就是数组,直接转成json格式提交就可以了啊,然后后台接收到之后,解析成数组格式。
每一个数组元素都是一个对象。这没有问题的。
唯一的麻烦就是,数组中对象的键值并不是完全相同的,这个问题是避免不了的,你使用任何格式去提交,都会有这个问题存在啊,这个就在后台处理时,麻烦一点呗,
比如使用某个属性时,先判断是不是有这个属性存在,没有就不做处理,这也是结构不同的交互带来的一个麻烦吧。
[解决办法]
java 有js 解析器
String fun = "var x= {code:"DS471", title:"Certain Methodologies and their Application to Anti-Dumping Proceedings Involving China", origin:"CHN",";
fun += " destination:"USA", start_date:"2013/12/03", subject:"", short_title:"", agreement:"", update_date:"2013/12/03", status:"ST1#2013_12_03", ";
fun += " third_party:"", reports_adopted:"false"};";
fun += " var obj="";for(var o in x){ obj+=(o+"-->"+x[o]+"
[解决办法]
"); } ";
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine engine = sem.getEngineByExtension("js");
try {
engine.eval(fun);
} catch (ScriptException ex) {
ex.printStackTrace();
}
System.out.println(engine.get("obj"));