web-dev-qa-db-ja.com

配列をJSONに変換する

いくつかの整数を保持する配列var cars = [2,3,..]があります。配列にいくつか値を追加しましたが、今度はjQueryの.getメソッドを介してこの配列をページに送信する必要があります。送信用にJSONオブジェクトに変換する方法を教えてください。

355
dotty

下位互換性のためのスクリプト: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

そして電話:

var myJsonString = JSON.stringify(yourArray);

注: JSONオブジェクトは、最近のほとんどのWebブラウザ(IE 8以上)の一部になりました。完全なリストは caniuse を見てください。クレジットは以下にあります:@Spudleyは以下の彼のコメントで

608
JonoW

私はそのようにしました:

私が持っている場合:

var jsonArg1 = new Object();
    jsonArg1.name = 'calc this';
    jsonArg1.value = 3.1415;
var jsonArg2 = new Object();
    jsonArg2.name = 'calc this again';
    jsonArg2.value = 2.73;

var pluginArrayArg = new Array();
    pluginArrayArg.Push(jsonArg1);
    pluginArrayArg.Push(jsonArg2);

pluginArrayArg(純粋なJavaScript配列)をJSON配列に変換するには、次のようにします。

var jsonArray = JSON.parse(JSON.stringify(pluginArrayArg))
63

うわー、それは今日ではずっと簡単になったようです...あなたがそれを行うことができる3つの方法:

json = { ...array };

json = Object.assign({}, array);

json = array.reduce((json, value, key) => { json[key] = value; return json; }, {});
33

あるいは、配列をオブジェクトとして定義してみてください。 (var cars = {};)それからjsonに変換する必要はありません。これはあなたの例では実用的ではないかもしれませんが、私にはうまくいきました。

11
think win win

私はjson2ライブラリを使うことに決めました、そして、私は「循環データ構造」についてのエラーを得ました。

複雑なオブジェクトの変換方法をjson2に指示することで解決しました。今はうまくいくだけでなく、必要なフィールドだけを含めました。これが私のやり方です。

OBJ.prototype.toJSON = function (key) {
       var returnObj = new Object();
       returnObj.devid = this.devid;
       returnObj.name = this.name;
       returnObj.speed = this.speed;
       returnObj.status = this.status;
       return returnObj;
   }
11
Paulo Pedroso

もう1つの方法はこれです。

        var json_arr = {};
        json_arr["name1"] = "value1";
        json_arr["name2"] = "value2";
        json_arr["name3"] = "value3";

        var json_string = JSON.stringify(json_arr);
1
Vijay Bansal

あなたが尋ねたもののように1つのオブジェクトしかない場合は、次のようになります。

var x = [{'a':'b'}];
var b= JSON.stringify(x);
var c = b.substring(1,b.length-1);
JSON.parse(c); 
1
Mahmoud ihmaid

整数の配列から有効なJSONを生成するために私が知っている最短の方法は、

let json = `[${cars}]`

より一般的なオブジェクト/配列( 循環参照なし )にはJSON.stringify(cars)を使用してください。

let cars = [1,2,3]; cars.Push(4,5,6);

let json = `[${cars}]`;

console.log(json);
console.log(JSON.parse(json)); // json validation
0