日期:2014-05-17  浏览次数:20779 次

用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"));

------解决方案--------------------
missing ; 
你拷贝2楼允许看看。
" update_date:\"2013/12/03\", status:\"ST1#2013_12_03\", third_party:\"\", reports_adopted:\"false\"};";