在js里有一个数组:var params = new Array();
params.push({
   "id":"007",
   "name":"bangder"
});
params.push({
   "id":"001",
   "name":"admin"
});
现在我传给到了java里.
在java里怎么才能拿到js数组中的值啊~//  已得到js中的参数
String[] params = getParams();
//  遍历
for(int i = 0; i < params.length; i++)
{
     //   我在这里怎么才能得到具体的值呢.
}也许.传递数组进来本身就是个走不出的胡同.

解决方案 »

  1.   

    http://www.json.org有现成的json数据转换的类库和js库.
    可以满足你的需求.
    Java库好像叫json-lib,js文件是json2.js
      

  2.   


    用json 如果怕麻烦的话还是弄成有规律的字符串到后台解析去吧
      

  3.   

    把ID ,和NAME连成一个字符串,放入到一个数组,JAVA用数组接收就行,再进行拆分
      

  4.   

    import javax.script.*;    ScriptEngineManager mgr = new ScriptEngineManager();
        ScriptEngine engine = mgr.getEngineByName("JavaScript");
        String script = "var params = new Array();\r\n" + "params.push({\r\n"
            + "   \"id\":\"007\",\r\n" + "   \"name\":\"bangder\"\r\n" + "});\r\n"
            + "params.push({\r\n" + "   \"id\":\"001\",\r\n"
            + "   \"name\":\"admin\"\r\n" + "});";
        ScriptContext ctx = new SimpleScriptContext();
        engine.eval(script, ctx);
        engine.eval("var length = params.length", ctx);
        int length = ((Number) ctx.getAttribute("length")).intValue();
        String[][] param = new String[length][2];
        for (int i = 0; i < length; i++) {
          String evalScript = String
              .format("var id = params[%1$d].id;var name = params[%1$d].name;", i);
          engine.eval(evalScript, ctx);
          param[i][0] = String.valueOf(ctx.getAttribute("id"));
          param[i][1] = String.valueOf(ctx.getAttribute("name"));      System.out.printf("id: %s, name: %s%n", param[i][0], param[i][1]);
        }
      

  5.   

    JDK 1.6+,使用里面的ScriptEngine运行(eval)js,并把响应信息保存在上下文环境(ScriptContext)中,然后不断地取出来。
    有一个问题,就是每次取(getAttribute)只能取简单的变量名,比如x, length之类已经显式定义过,但是不能取param[0]。
    其次,每次取出的对象最好是简单数据,也就是
    var id = params[0].id; 
    Object id = ctx.getAttribute("id");
    而不是
    var param = params[0]; 
    Object param = ctx.getAttribute("param");
    后面一种方式,通过debug也能看到id,name的信息,但是由于这种类型的class依赖于供应商的实现,可能随版本而发生变化,导致代码不兼容。