4

このような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]]]

したがって、3つの配列を含む1つの大きな配列があり(これは2つまたは3つ以上の配列になる場合があります)、これら3つの配列のそれぞれにいくつかの配列が含まれています(上記の例)。

逆の手順(デコードされた形式)とは何ですか?これらの配列からこれらの値が必要な場合はどうなりますか。

org.json Java APIを試しましたが、これは正しいですか?

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

4 に答える 4

2

JSON文字列を解析するためのjson-libがあります。O'Reillyに関するこの記事を参照してください。また、Mavenベースの例も示しているため、Ctrl-C / Ctrl-V(または必要に応じてCmd)の優れたソースです。

于 2010-09-15T06:48:55.923 に答える
2

JSON配列を解析するだけでよい場合は少しやり過ぎかもしれませんが、Java 6を使用する場合はJava内でJavaScriptを使用できます。次に、JavaScript配列をArrayListまたはで使用したいものに変換できます。埋め込まれたJavaScript関数内のJavaクラスにアクセスできるため、Java側。

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プラットフォーム用スクリプト」および「Javaスクリプティングプログラマーズガイド」を参照してください。

于 2010-09-15T10:07:08.357 に答える
2

json.orgには、JSONをデコードおよびエンコードするための無料のクラスがいくつかあります:http ://www.json.org/java/index.html

于 2010-09-15T10:19:43.193 に答える
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 
                }
            }
    }
于 2010-09-15T09:41:24.137 に答える