1

私は以下のようにJSONArrayを持っています:

[["title","details"],["abc","xyz"],["abc2","xyz2"]]

Java / JavaScript を使用して、以下のように JSONObject の配列に変換するにはどうすればよいですか?

[ { 'title': abc,  'details':xyz,}, {'title': abc2, 'details':xyz2}]
4

4 に答える 4

1

今のところ、これに対する回避策を見つけました。ビルドイン関数またはこれに関する具体的な実装をまだ探しています。

String inputStr = "[[\"title\",\"details\"],[\"abc\",\"xyz\"],[\"abc2\",\"xyz2\"]]";

try {
    JSONArray inputArray = new JSONArray(inputStr);
    JSONArray outputArray = new JSONArray();

    for (int i = 0; i < inputArray.length(); i++) {
        JSONArray inArr = inputArray.getJSONArray(i);
        for (int j = 0; j < inArr.length(); j++) {
            if (i != 0) {
                outputArray.put(new JSONObject().put(
                        inputArray.getJSONArray(0).getString(j), inArr.get(j)));
            }
        }
    }
    System.out.println("outputArray = " + outputArray.toString());
} catch (JSONException jse) {
    System.out.println("jse = " + jse.toString());
}

出力:

outputArray = [{"title":"abc"},{"details":"xyz"},{"title":"abc2"},{"details":"xyz2"}]
于 2012-06-06T11:15:23.947 に答える
1

以下のコードは、値の複数の配列を渡すことができるように、こちらのソリューションから変更されました。

function makeObject(keys, array) {
    var output = [];
    for (var o = 0; o < array.length; o++) {
        var object = {};
        for (var i = 0; i < array[o].length; i ++ ) {
         object[keys[i]] = array[o][i];
        }
        output.push(object);
    }
    return output;
}

// input array
var array = [["title","details"],["abc","xyz"],["abc2","xyz2"]];    

// extract keys leaving only values in array
var keys = array.shift();

// build object
var output = makeObject(keys, array);

例: http://jsfiddle.net/u54tT/1/

于 2012-06-06T20:37:15.423 に答える
0

私がタスクを正しく理解した場合、それは少し重要なケースであるように思われるので、この仕事をする方法はありません。したがって、独自の変換を作成する必要があります。

于 2012-06-06T10:42:33.837 に答える
0

これはあなたが探しているものですか?

jQuery.parseJSON( json ) Returns: Object

説明:整形式のJSON文字列を受け取り、結果のJavaScriptオブジェクトを返します。 http://api.jquery.com/jQuery.parseJSON/

于 2012-06-06T10:39:57.930 に答える