Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从JSON响应获取字符串[]数组_Java_Json_String - Fatal编程技术网

Java 从JSON响应获取字符串[]数组

Java 从JSON响应获取字符串[]数组,java,json,string,Java,Json,String,我从服务器获得以下JSON响应 [["1","1"],["2","1"],["3","1"],["4","1"],["5","1"],["6","1"],["7","1"],["8","1"],["9","2"],["10","3"],["11","3"],["12","3"],["13","3"],["14","3"],["15","3"],["16","3"],["17","3"],["18","3"],["19","3"]] 它是JSON格式的,我得到的是一个字符串[],类似这样的东西

我从服务器获得以下JSON响应

[["1","1"],["2","1"],["3","1"],["4","1"],["5","1"],["6","1"],["7","1"],["8","1"],["9","2"],["10","3"],["11","3"],["12","3"],["13","3"],["14","3"],["15","3"],["16","3"],["17","3"],["18","3"],["19","3"]]
它是JSON格式的,我得到的是一个
字符串[]
,类似这样的东西

String response = Response.getValue();
System.out.println(response) = [["1","1"],["2","1"],["3","1"],["4","1"],["5","1"],["6","1"],["7","1"],["8","1"],["9","2"],["10","3"],["11","3"],["12","3"],["13","3"],["14","3"],["15","3"],["16","3"],["17","3"],["18","3"],["19","3"]]
但是,响应是由两个值组成的矩阵
[USU\u ID,DEPARTMENT]
,我需要在
字符串[][]
中使用它。我该怎么做?我尝试使用
StringTokenizer
,但效果不太好

这是我写的代码

public static String[][] Json2Matrix(String jsonStringArray) {
        int i = 0;
        int j = 0;

        String[][] mstrJsonString = null;
        StringTokenizer tokElementos, tokSubelementos, tokTemp;
        //jsonArray = "[["a","b"],["c","d"],["e","f"]]";
        //jsonStringArray = jsonStringArray.replace("\"", "");
        //jsonArray = "[[a,b],[c,d],[e,f]]";
        jsonStringArray = jsonStringArray.substring(1, jsonStringArray.length() - 2);
        //jsonArray = "[a,b],[c,d],[e,f]";/

        //System.out.println(jsonStringArray);

        //JSONSerializer.toJSON(jsonStringArray);

        //System.out.println(jsonArray.toString());

        //<editor-fold defaultstate="collapsed" desc="Prueba">
        tokElementos = new StringTokenizer(jsonStringArray, "[]");

        tokTemp = tokElementos;
        tokSubelementos = new StringTokenizer(tokTemp.nextToken(), ",");

        //System.out.println(tokElementos.countTokens());

        //System.out.println(tokElementos.nextToken());

        //System.out.println(tokSubelementos.countTokens()/2);

        mstrJsonString = new String[tokElementos.countTokens()][tokSubelementos.countTokens()];

        while (tokElementos.hasMoreTokens()) {
            tokSubelementos = new StringTokenizer(tokElementos.nextToken(), ",");
            j = 0;
            while (tokSubelementos.hasMoreTokens()) {

                mstrJsonString[i][j] = tokSubelementos.nextToken();
                System.out.println(i + "," + j + " " + mstrJsonString[i][j]);
                j++;
            }
            i++;

        }
        //</editor-fold>
        return mstrJsonString;
    }
它获得正确的值,但索引不正确。有人能帮我纠正一下吗。


希望这能有所帮助,几个月前我在java中使用JSON时使用了它,效果非常好(*还使用了netbeans)

使用JSON解析器比自己编写一个原始解析器节省了很多精力

我使用了以下基于Java的JSON解析器:

  • 杰克逊[http://jackson.codehaus.org/]
  • 谷歌的GSON[http://code.google.com/p/google-gson/]
  • 我推荐谷歌的GSON为:

  • 您可以将json字符串序列化/反序列化为Java对象[POJO],而无需注释[使用变量名]
  • 可以轻松序列化/反序列化深层对象层次结构
  • 它对Java泛型有很好的支持

  • 对不起,您想编写自己的json解析器吗?为什么不使用字符串[][]nuevo=JsonParser.fromJson(jsonStringaray,字符串[][]class);这就是我的解决方案。。。。哦,天哪,谢谢我愚蠢的问题。。。我在这方面很年轻。感谢卢卡斯:)在C#中,我想说你正在反序列化一个列表,如果这有帮助的话。。。
    run:
    1,0 "2"
    1,1 "1"
    3,0 "3"
    3,1 "1"
    5,0 "4"
    5,1 "1"
    7,0 "5"
    7,1 "1"
    9,0 "6"
    9,1 "1"
    11,0 "7"
    11,1 "1"
    13,0 "8"
    13,1 "1"
    15,0 "9"
    15,1 "2"
    17,0 "10"
    17,1 "3"
    19,0 "11"
    19,1 "3"
    21,0 "12"
    21,1 "3"
    23,0 "13"
    23,1 "3"
    25,0 "14"
    25,1 "3"
    27,0 "15"
    27,1 "3"
    29,0 "16"
    29,1 "3"
    31,0 "17"
    31,1 "3"
    33,0 "18"
    33,1 "3"
    35,0 "19"
    35,1 "3"