代码之家  ›  专栏  ›  技术社区  ›  Rachel

如何在Java中解析JSON对象:

  •  0
  • Rachel  · 技术社区  · 14 年前

    dojo.xhrPost() 方法如下:

    dojo.xhrPost({
    url: /esturl/,
    handleAs : "text",
    content : {INST1 : {"0001" : "aa"},
                INST2 : {"0002" : "bb"},
                INST3 : {"0003" : "cc"}},
    load : load(data),
    error : error
    });
    

    现在我正在从请求上下文中读取此post数据:

    Map<String, String[]> paramMap = requestContext.getParameterMap();
    

    在循环打印时:

    Iterator it = paramMap.entrySet().iterator();
    while(it.hasnext()){
     Map.entry pairs = (Map.Entry) it.next();
     System.out.println(pairs.getKey());
     System.out.println(pairs.getkValue());
    
    }
    

    这让我回想起:

    INST1
    [Ljava.lang.String;@1b4cef
    INST2
    [Ljava.lang.String;@5801d
    

    INST1 : {"0001" : "aa"}, INST2 : {"0002" : "bb"}, INST3 : {"0003" : "cc"}}, 任何指导都将不胜感激。

    更新

    当我试图使用

    String[] X = requestContext.getParameters{"INST1"};
    
    if (X != null){
       System.out.println(X.length);
       System.out.println(X[0]);
       System.out.println(X[0].length);
    }
    

    然后我得到:

    1
    [object Object]
    [object Object]
    

    现在我怎样才能得到 INST1 : {"0001" : "aa"} 而不是[对象对象]?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Gaurav Saxena    14 年前

    如dojo文档中所示 here 您设置的对象将被读取为name1=value1。因此,在您的情况下,变量的传递方式可能是INST1=0001,INST1=aa。

    您可以尝试在这些行上使用“content”的语法- INST1 : '{"0001" : "aa"}' INST1 : "{\"0001\" : \"aa\"}" 所以INST1有一个明确的值

        2
  •  2
  •   user257319 user257319    14 年前

    你可以使用这个修改过的 JSONObject class 得到 方法。查看完整的javadoc here