2010-09-15 5 views
4

J'ai reçu un tableau JSON (codé) imbriqué au format qui ressemble à ceci;Décoder le format JSON en Java

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

J'ai donc un grand tableau qui contient trois tableaux (ce qui peut être 2 ou plus de trois tableaux parfois) et chacun de ces trois tableaux contient des tableaux, dans cet exemple ci-dessus.

Quelle est la procédure inverse (format décodé)? Je veux dire que si je veux ces valeurs de ces tableaux.

J'ai essayé org.json Java API, est ce droit:

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

Pour répondre à votre dernière question - list.getInt() est ce que vous voulez. – Nick

+0

Merci @Nick qui m'aide .. – jimmy

Répondre

1
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 
       } 
      } 
    } 
2

Il est JSON-lib pour analyser des chaînes JSON. Voir this article on O'Reilly. Il montre aussi un exemple basé sur Maven donc une bonne source pour Ctrl-C/Ctrl-V (ou Cmd si vous préférez).

+0

Merci beaucoup pour le tutoriel. – jimmy

+0

de rien. –

2

Il est peut-être un peu trop si vous avez juste besoin d'analyser le tableau JSON, mais vous pouvez utiliser JavaScript dans les Java si vous utilisez Java 6. Vous pouvez ensuite convertir le tableau JavaScript dans un ArrayList ou tout ce que vous voulez utiliser du côté Java, puisque vous pouvez accéder aux classes Java à l'intérieur de la fonction JavaScript intégrée.

Intégrer JavaScript en Java ressemblerait à ceci:

// 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); 

Si vous voulez faire plus que simplement convertir votre tableau JSON à un tableau Java, cela pourrait être utile. Vous pouvez trouver plus d'informations sous Scripting for the Java Platform et Java Scripting Programmer's Guide.