JSオブジェクトをJSON文字列に変換する


1244

私がJSでオブジェクトを定義した場合:

var j={"name":"binchen"};

オブジェクトをJSONに変換するにはどうすればよいですか?出力文字列は次のようになります。

'{"name":"binchen"}'

63
JSON.stringify()あなたが探している方法です。
Gowtham Gopalakrishnan 2016

10
あなたがそれを学ばなければならない時はいつもその時にあります。
イーガンウルフ

回答:


1922

現在のすべてのブラウザーには、組み込みのJSONサポートが組み込まれています。IE6/ 7のような先史時代のブラウザーを扱わない限り、次のように簡単に行うことができます。

var j = {
  "name": "binchen"
};
console.log(JSON.stringify(j));


5
を機能させるには、このスクリプトをダウンロードしてくださいJSON.stringify(j);
AabinGunz

2
ノードが同じエンジンを使用するため、nodejsで作業する
georgelviv

26
この回答は、IE9がリリースされる1年前に投稿されたので、執筆時点では、IE8は確かに最新のブラウザーでしたか、少なくとも利用可能な最新のIEでした。
Andris

JSON.stringifyはネストされたオブジェクトを変換しません。そのための解決策.. ??
Ritesh 2017年

9
より読みやすいjson文字列が必要な場合は、次のようなスペースパラメータを使用できます var formattedJSON = JSON.stringify(j, null, 2);
ヤツェクGzel

110

JSON.stringify()見つかったjson2.jsか、最新のブラウザでネイティブ。

   JSON.stringify(value, replacer, space)
        value       any JavaScript value, usually an object or array.

       replacer    an optional parameter that determines how object
                    values are stringified for objects. It can be a
                    function or an array of strings.

       space       an optional parameter that specifies the indentation
                    of nested structures. If it is omitted, the text will
                    be packed without extra whitespace. If it is a number,
                    it will specify the number of spaces to indent at each
                    level. If it is a string (such as '\t' or ' '),
                    it contains the characters used to indent at each level.

       This method produces a JSON text from a JavaScript value.

6
もう少し明確にするために:replacer あるあなたはまだ使用したいのであれば、オプションでspaceあなたが入れた引数nullのためにreplacer。この関数をきれいな印刷に使用することに興味がある場合は、この回答も役に立ちます。stackoverflow.com
Glenn Lawrence

34

Thomas Frankによる更新された/より良い方法をチェックしてください:

2008年5月17日更新:toObject-methodに小さなサニタイザーが追加されました。 これで、toObject()は悪意のあるコードを検出しても、文字列をeval()しません。

JSONコンセプトの父であるDouglas Crockfordが、JavaScriptの最初の文字列指定子の1つを書きました。その後Trim PathのSteve Yenが私がしばらく使ってきた素晴らしい改良版を書きました。私があなたと共有したいのは、スティーブのバージョンへの私の変更です。基本的に、彼らは私の文字列化を作りたいという願望から生じました:

  • 循環参照の処理と復元
  • (オプションとして)関数/メソッドのJavaScriptコードを含める
  • 必要に応じて、Object.prototypeからオブジェクトメンバーを除外します。

23

JSON.stringify()メソッドを使用して、JSONオブジェクトを文字列に変換できます。

var j={"name":"binchen"};
JSON.stringify(j)

逆のプロセスでは、JSON.parse()メソッドを使用して、JSON文字列をJSONオブジェクトに変換できます。


逆のプロセスを追加していただきありがとうございます。
David Lavieri 2017

12

angularJSで

angular.toJson(obj, pretty);

obj:JSONにシリアル化される入力。

pretty(オプション):
trueに設定すると、JSON出力に改行と空白が含まれます。整数に設定すると、JSON出力にはインデントごとにその数のスペースが含まれます。

(デフォルト:2)


12

JSON.stringify(j, null, 4) 美化も必要な場合に備えて、美化されたJSONを提供します

2番目のパラメーターはreplacerです。文字列化するときに特定のキー値をフィルターで除外できるフィルターとして使用できます。nullに設定すると、すべてのキーと値のペアが返されます



9

JSON.stringify JavaScriptオブジェクトをJSONテキストに変換し、そのJSONテキストを文字列に格納します。

変換はオブジェクトから文字列へ

JSON.parse JSONテキストの文字列をJavaScriptオブジェクトに変換します。

変換は文字列からオブジェクトへ

var j={"name":"binchen"};

これをJSON文字列にするには、次のように使用できます。

JSON.stringify({"key":"value"});

JSON.stringify({"name":"binchen"});

詳細については、以下のこのリンクを参照してください。

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify


7

stringifyメソッドから奇妙なことをするまで、これに定義された1つのカスタム

var j={"name":"binchen","class":"awesome"};
var dq='"';
var json="{";
var last=Object.keys(j).length;
var count=0;
for(x in j)
{
json += dq+x+dq+":"+dq+j[x]+dq;
count++;
if(count<last)
   json +=",";
}
json+="}";
document.write(json);

出力

{"name":"binchen","class":"awesome"}

ライブ http://jsfiddle.net/mailmerohit5/y78zum6v/


"a \" in a string "
alphakevin

1
そのカスタムコードは非常に不完全です。配列、オブジェクト、特殊文字はサポートしていません。例:json {"arr":["1"、 "2"、 "3"]、 "obj":{"a": "b"}、 "key \" with \\ special} chars ":" value "}は、{" arr ":" 1,2,3 "、" obj ":" [object Object] "、" key "with \ special} chars": "value"}を出力しますが、これは誤りです。
Manuel Romeiro、2018

7

私はstringifyでメモリ不足が発生し、他のソリューションが機能していないように見えました(少なくともそれらを機能させることができませんでした)。このスレッドで偶然見つけました。Rohit Kumarのおかげで、非常に大きなJSONオブジェクトを繰り返し処理して、クラッシュを防ぎます

var j = MyObject;
var myObjectStringify = "{\"MyObject\":[";
var last = j.length
var count = 0;
for (x in j) {
    MyObjectStringify += JSON.stringify(j[x]);
    count++;
    if (count < last)
        MyObjectStringify += ",";
}
MyObjectStringify += "]}";

MyObjectStringifyは文字列表現を提供します(このスレッドで他の回に述べたように)大きなオブジェクトがある場合を除き、これも機能するはずです - ニーズに合わせてビルドすることを確認してください -配列よりも名前が必要でした


5

Woking ...使いやすい

$("form").submit(function(evt){
  evt.preventDefault();
  var formData = $("form").serializeArray(); // Create array of object
  var jsonConvert = JSON.stringify(formData);  // Convert to json
});

ありがとう


3

あなたはこのようなネイティブの文字列化関数を使うことができます

const j={ "name": "binchen" }

/** convert json to string */
const jsonString = JSON.stringify(j)

console.log(jsonString) // {"name":"binchen"}


3

jsonプロパティ値を文字列形式で取得する場合は、次の方法を使用します

var i = {"x":1}

var j = JSON.stringify(i.x);

var k = JSON.stringify(i);

console.log(j);

"1"

console.log(k);

'{"x":1}'

3

Node JSでのデバッグには、util.inspect()を使用できます。循環参照でよりよく機能します。

var util = require('util');
var j = {name: "binchen"};
console.log(util.inspect(j));

3

既存のJSONの置換は多すぎるため、独自の関数を記述しました。これは機能しているようですが、いくつかのエッジケースを見逃した可能性があります(私のプロジェクトでは発生しません)。おそらく、既存のオブジェクトに対しては機能せず、自作のデータに対してのみ機能します。

function simpleJSONstringify(obj) {
    var prop, str, val,
        isArray = obj instanceof Array;

    if (typeof obj !== "object") return false;

    str = isArray ? "[" : "{";

    function quote(str) {
        if (typeof str !== "string") str = str.toString();
        return str.match(/^\".*\"$/) ? str : '"' + str.replace(/"/g, '\\"') + '"'
    }

    for (prop in obj) {
        if (!isArray) {
            // quote property
            str += quote(prop) + ": ";
        }

        // quote value
        val = obj[prop];
        str += typeof val === "object" ? simpleJSONstringify(val) : quote(val);
        str += ", ";
    }

    // Remove last colon, close bracket
    str = str.substr(0, str.length - 2)  + ( isArray ? "]" : "}" );

    return str;
}

2
So in order to convert a js object to JSON String: 

オブジェクトを文字列に変換する簡単な構文は次のとおりです。

JSON.stringify(value)

完全な構文は次のとおりです 。JSON.stringify(value [、replacer [、space]])

簡単な例をいくつか見てみましょう。文字列全体が二重引用符で囲まれ、必要に応じて文字列内のすべてのデータがエスケープされることに注意してください。

JSON.stringify("foo bar"); // ""foo bar""
JSON.stringify(["foo", "bar"]); // "["foo","bar"]"
JSON.stringify({}); // '{}'
JSON.stringify({'foo':true, 'baz':false}); /* " 
{"foo":true,"baz":false}" */



const obj = { "property1":"value1", "property2":"value2"};
const JSON_response = JSON.stringify(obj);
console.log(JSON_response);/*"{ "property1":"value1", 
"property2":"value2"}"*/

2
コードの簡単な説明を提供していただければ幸いです。
ジョニー

これは質問に対する答えを提供しません。十分な評判られると、どの投稿にもコメントできるようになります。代わりに、質問者からの説明を必要としない回答を提供してください。- 口コミより
ラファエル

回答を編集しました。@ Rafaelと@ jonnyを指摘していただき、ありがとうございます。
Rahul Choudhary、2018年

1

JSON.stringifyこのような変換を行うために使用するだけです-ただし、undefined値を持つフィールドはjsonに含まれないことに注意

var j={"name":"binchen", "remember":undefined, "age": null };

var s=JSON.stringify(j);

console.log(s);

remember出力JSONからフィールドが「消える」


あなたは私の日を救った。オブジェクトを保存できませんでした。未定義の値を持つフィールドがjsonに含まれないというキーは私の問題を解決しました!
Mohammad Ghonchesefidi

0

JSON.stringify()メソッドを使用して、JSONオブジェクトを文字列に変換できます。

var j={"name":"hello world"};
JSON.stringify(j);

この文字列をjsonオブジェクトに戻すには、JSON.parse()メソッドを使用できます。


0

使用する JSON.stringify(param1, param2, param3);

とは: -

param1-> JSONに変換する値

param2->独自の方法で文字列化する関数。または、最終的なJSONにオブジェクトを含める必要があるホワイトリストとして機能します。

param3->追加する空白の数を示す数値データ型。最大許容数は10です。


0

str => objに変換

const onePlusStr = '[{"brand": "oneplus"}、{"model": "7T"}]';

const onePLusObj = JSON.parse(onePlusStr);

obj => strに変換する

const onePLusObjToStr = JSON.stringify(onePlusStr);

JSでのJSON解析の参照:
JSON.parse():クリック
JSON.stringify():クリック


詳細情報を提供できますか?リファレンスなど
Nodejs-nerd

JSでのJSON解析の参照:JSON.parse():w3schools.com/js/js_json_parse.asp JSON.stringify():w3schools.com/js/js_json_stringify.asp
yash

回答を編集して、これを含めることができますか
Nodejs-nerd

0

非常に使いやすい方法ですが、リリースでは使用しないでください(互換性の問題が考えられるため)。

あなたの側でのテストに最適です。

Object.prototype.toSource()

//Usage:
obj.toSource();

0

stringify関数を使用する

var j = {
"name":"binchen"
};

var j_json = JSON.stringify(j);

console.log("j in json object format :", j_json);

ハッピーコーディング!!!



-1

これを使って、

var j={"name":"binchen"};
 var myJSON = JSON.stringify(j);

-24

json文字列があり、それが[]でラップされていない場合は、最初にラップします

var str = '{"city": "Tampa", "state": "Florida"}, {"city": "Charlotte", "state": "North Carolina"}';
str = '[' + str + ']';
var jsonobj = $.parseJSON(str);

または

var jsonobj = eval('(' + str + ')');
console.log(jsonobj);

OPは逆の方向に進んでいます。あなたの質問は、JSON文字列があり、それをオブジェクトとして取得したいという逆のケースに答えます。
Joshua Snider 2015年

1
質問とは逆のことを
行いました。JSON.stringfy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.