Декодирование формата JSON в Java - PullRequest
4 голосов
/ 15 сентября 2010

Я получил вложенные массивы в формате 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 или более трех массивов) икаждый из этих трех массивов содержит несколько массивов, в этом примере выше.

Что такое обратная процедура (декодированный формат)?Я имею в виду, что если мне нужны эти значения из этих массивов.

Я пробовал org.json Java API, верно ли это:

JSON JSONArray list = new JSONArray();
list.get()

Ответы [ 4 ]

2 голосов
/ 15 сентября 2010

На json.org есть несколько бесплатных классов для декодирования и кодирования JSON: http://www.json.org/java/index.html

2 голосов
/ 15 сентября 2010

Это может быть немного излишним, если вам просто нужно проанализировать массив JSON, но вы можете использовать JavaScript в Java, если вы используете Java 6. Затем вы можете преобразовать массив JavaScript в ArrayList или что вы хотите использовать на стороне Java, поскольку вы можете получить доступ к классам Java внутри встроенной функции JavaScript.

Встраивание JavaScript в Java будет выглядеть примерно так:

// create a script engine manager
ScriptEngineManager factory = new ScriptEngineManager();
// create JavaScript engine
ScriptEngine engine = factory.getEngineByName("JavaScript");

// evaluate JavaScript code
engine.eval("function someFunction(param) {...}");

// you can also use an external script
//engine.eval(new java.io.FileReader("/path/to/script.js"));

// javax.script.Invocable is an optional interface.
// Check whether your script engine implements or not!
// Note that the JavaScript engine implements Invocable interface.
Invocable inv = (Invocable) engine;

// invoke your global function
Object result = inv.invokeFunction("someFunction", param);

Если вы хотите сделать больше, чем просто преобразовать массив JSON в массив Java, это может быть полезно. Вы можете найти дополнительную информацию в Сценарии для Java Platform и Руководство по программированию Java Scripting .

2 голосов
/ 15 сентября 2010

Существует json-lib для анализа строк JSON.См. эту статью на O'Reilly .Также показан пример на основе maven, поэтому хороший источник для Ctrl-C / Ctrl-V (или Cmd, если вы предпочитаете).

1 голос
/ 15 сентября 2010
    someArray[] array = [
    [[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]]]


    JSONArray superMasterArray = new JSONArray(array);
    if(superMasterArray != null){
        for(int i = 0; i < superMasterArray.length(); i++ ){
        JSONArray masterArray = (JSONArray) superMasterArray.get(i);
            for(int j = 0; j< masterArray.length(); j++){
                 JSONArray innerArray = (JSONArray) masterArray.get(j);
                 innerArray.getint(0);// gives 1st element of the inner array that is 1234
                 innerArray.getint(1);// gives 245
                 innerArray.getint(2);// gives 10
// if you dont know how many element in the given array, then loop it with size of array 
                }
            }
    }
...