JSON for Java,编码JSON数组-流

JSON for Java,编码JSON数组-流,java,json,Java,Json,[我有一些创建JSON数组的代码。在这段代码中,我将一些值传递给循环中的x,y,z,如下所示 JSONArray list = new JSONArray(); String jsonText = null; for (int j = 0; j < 4; j++) { list.add(new Integer(x)); list.add(new Integer(y)); list.add(new Integer(z));

[我有一些创建JSON数组的代码。在这段代码中,我将一些值传递给循环中的
x
y
z
,如下所示

   JSONArray list = new JSONArray();
   String jsonText = null;
   for (int j = 0; j < 4; j++) {
       list.add(new Integer(x));
       list.add(new Integer(y));
       list.add(new Integer(z));
       jsonText = list.toString();
  }
  System.out.print(jsonText);
所以我有一个大数组,它包含三个数组(有时可能是两个或三个以上的数组),在上面的例子中,这三个数组中的每一个都包含一些数组

什么是反向过程?我的意思是,如果我想从这些数组中得到这些值,该怎么办?就像我以前做的一样。使用JSON JSONArray list=新的JSONArray(); get()这个get方法能满足我的要求吗? 我使用了org.json Java API


感谢朋友们一直以来对我的帮助。

把它放在另一个
JSONArray
里就行了

JSONArray array = new JSONArray();
array.add(list);
String jsonText = array.toString();
public int[] getThreeValues() { // example
    Random r = new Random();
    return new int[] { r.nextInt(100), r.nextInt(100), r.nextInt(100) };
}

public void execute() {

    JSONArray master = new JSONArray();

    for (int j=0; j<4; j++) {
        master.put(getThreeValues());
    }

    System.out.println(master);
}

更新:根据您的评论:


对不起,输出是这样的

[
[[1234,245,10],[312,234,122],[1234,67788,345],[235,001,332]],
[[1234,245,10],[312,234,122],[1234,67788,345],[235,001,332],[1234,67788,3450]],
[[1234,245,10],[312,234,122],[1234,67788,345],[235,001,332],[1234,67788,34534]]]
[1234,245,10,312,234,122,1234,67788,345,235,001,332] 
你能告诉我如何得到这样的输出吗

[1234,245,10][312,234,122][1234,67788,345][235,001,332] 
有几种方法:

  • 连接到
    jsonString

    String jsonText = ""; // Start with empty string.
    for (int j = 0; j < 4; j++) {
        JSONArray list = new JSONArray(); // Create new on each iteration.
        list.add(new Integer(x));
        list.add(new Integer(y));
        list.add(new Integer(z));
        jsonText += list.toString(); // += concatenates to existing string.
    }
    System.out.print(jsonText);
    

  • 您始终可以将列表放在JSONArray中

    e、 g


    我怀疑您想要的是一个语法正确的JSON数组,其中包含嵌套的整数数组(原始post请求无效的JSON)

    要获得包含子数组的数组,只需将子数组创建为
    int[]
    数组,并将它们直接添加到主
    JSONArray

    JSONArray array = new JSONArray();
    array.add(list);
    String jsonText = array.toString();
    
    public int[] getThreeValues() { // example
        Random r = new Random();
        return new int[] { r.nextInt(100), r.nextInt(100), r.nextInt(100) };
    }
    
    public void execute() {
    
        JSONArray master = new JSONArray();
    
        for (int j=0; j<4; j++) {
            master.put(getThreeValues());
        }
    
        System.out.println(master);
    }
    
    public int[]getThreeValues(){//示例
    随机r=新随机();
    返回新的int[]{r.nextInt(100),r.nextInt(100),r.nextInt(100)};
    }
    public void execute(){
    JSONArray master=新的JSONArray();
    
    对于(int j=0;jIs)最后一行(示例输出)正确吗?对不起,输出是这样的[1234245,10312234122123467788345235001332]您能告诉我如何获得上面的输出吗?请告诉我[1234245,10][312234122][123467788345][235001332]你确定这就是你想要的输出吗?根据最初的问题,我希望期望的输出是
    [[1234245,10],[312234122],[123467788345],[235001332]
    (即嵌套数组的数组),而不是
    [1234245,10][31234122][123467788345][235001332]
    (即一个看起来像没有任何分隔的数组的字符串)。第二个实际上没有意义,因为它不是正确的JSON,除非你用
    引号将它括起来,然后它将是一个字符串,而不是一系列可由JSON解析的数组。是的,你是对的@Chadwick它应该是这样的。[[1234245,10],[31234122],[123467788345],[235001332]],它应该是一个数组而不是字符串,谢谢你指出我的错误。很高兴你得到了一个对你有用的答案,但不要编辑一个问题只是为了添加另一个问题。创建一个新问题(或搜索以查看是否已经问过)-如果与此相反,也没关系,只要你不问同一个问题!你甚至可以明确地提到这个问题来展示一些背景。我得到了两个答案。我有两种不同的方法,一种是串联数组,另一种是嵌套数组。所以我得到了你的解决方案,还有@chadwick的解决方案。谢谢你的回复你们真是天才。谢谢你们的帮助。这是一个运用人类逻辑思维能力的问题。但令人遗憾的是,你们最初的问题完全错了。是的,我同意你们的观点,但正如我说过的,我必须同时使用urs和@Chadwick的答案。但我的错误是,我应该同时要求这两个答案。你们的答案对我有帮助我要找的名字。
       JSONArray list = new JSONArray();
       String jsonText = null;
       for (int j = 0; j < 4; j++) {
           list.add(new Integer(x));
           list.add(new Integer(y));
           list.add(new Integer(z));
      }
    
      JSONArray finalList = new JSONArray();
      finalList.put(0, list);
      jsonText = finaList.toString();
      System.out.print(jsonText);
    
    jsonText += "[" + jsonText + "]";
    System.out.print(jsonText);
    
    public int[] getThreeValues() { // example
        Random r = new Random();
        return new int[] { r.nextInt(100), r.nextInt(100), r.nextInt(100) };
    }
    
    public void execute() {
    
        JSONArray master = new JSONArray();
    
        for (int j=0; j<4; j++) {
            master.put(getThreeValues());
        }
    
        System.out.println(master);
    }
    
    [[3,13,37],[24,4,64],[61,2,1],[97,13,86]]