JSON для Java, кодирование массива JSON - потоковая передача - PullRequest
2 голосов
/ 13 сентября 2010

[У меня есть код для создания массива 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);

Это дает вывод как

[1234,245,10,312,234,122,1234,67788,345,235,001,332]

Как я могу получить эти значения в одном массиве, как это?

[[1234,245,10],[312,234,122],[1234,67788,345],[235,001,332]]
] Я получил ответ на этот вопрос. Нужен ответ на следующий вопрос.

Я использовал одно из следующих решений. Спасибо за ответ, ребята.

Теперь у меня есть вложенные массивы в формате JSON, которые выглядят так:

[
[[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]]]

Так что у меня есть один большой массив, который содержит три массива (иногда это может быть 2 или более трех массивов), и каждый из этих трех массивов содержит несколько массивов, в этом примере выше

что такое обратная процедура? Я имею в виду, что если я хочу эти значения из этих массивов. Точно так же, как я сделал. используя JSON JSONArray list = new JSONArray (); list.get () этот метод get даст мне то, что мне нужно? Я использовал Java API org.json.

Спасибо друзьям за помощь до сих пор.

Ответы [ 3 ]

4 голосов
/ 13 сентября 2010

Просто поместите его в другое JSONArray.

JSONArray array = new JSONArray();
array.add(list);
String jsonText = array.toString();

Обновление : согласно вашему комментарию:

Извините, выводчто-то вроде этого

[1234,245,10,312,234,122,1234,67788,345,235,001,332] 

Подскажите, пожалуйста, как получить приведенный выше вывод следующим образом

[1234,245,10][312,234,122][1234,67788,345][235,001,332] 

Несколько способов:

  1. Конкатенация к 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);
    
  2. Поскольку конкатенация строк с использованием += в цикле является перебором памяти и медленной, лучше использовать StringBuilder.

    StringBuilder jsonText = new StringBuilder();
    for (int j = 0; j < 4; j++) {
        JSONArray list = new JSONArray();
        list.add(new Integer(x));
        list.add(new Integer(y));
        list.add(new Integer(z));
        jsonText.append(list.toString();
    }
    System.out.print(jsonText.toString());
    
2 голосов
/ 14 сентября 2010

Я подозреваю, что вам нужен синтаксически правильный массив JSON вложенных массивов целых чисел (исходное сообщение запрашивает недопустимый JSON). Если нет, то ответьте @ BalusC .

Чтобы получить массив, содержащий под-массивы, просто создайте под-массивы как int[] массивы и добавьте их непосредственно в ваш основной JSONArray.

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]]

Примечание: я не уверен, какую библиотеку JSON вы используете, поэтому я использовал Java API org.json, который использует put(...) вместо add(...). Кроме того, эта конкретная библиотека поддерживает добавление массивов int [] непосредственно в JSONArray - ваши могут этого не делать, в этом случае вам потребуется создать вложенные JSONArrays и добавить их в свой мастер.

0 голосов
/ 13 сентября 2010

Вы всегда можете поместить список в JSONArray

например,

   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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...