将 JS 文件转换为 JSON 字符串

Convert JS object to JSON string

提问人:Bin Chen 提问时间:11/12/2010 最后编辑:Kamil KiełczewskiBin Chen 更新时间:4/16/2023 访问量:1765874

问:

如果我在 JS 中定义了一个对象:

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

如何将对象转换为 JSON?输出字符串应为:

'{"name":"binchen"}'
JavaScript JSON 字符串 对象

评论

77赞 Gowtham 6/24/2016
JSON.stringify()是你要找的方法。
13赞 Egan Wolf 2/14/2018
总有第一次你必须学习它。
0赞 Justin Meskan 7/1/2020
JSON.stringify 也是复制对象的好方法

答:

123赞 Ignacio Vazquez-Abrams 11/12/2010 #1

json2 .js 中找到或在大多数现代浏览器中原生。JSON.stringify()

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.

评论

8赞 Glenn Lawrence 7/29/2016
为了更清楚一点:可选的,所以如果你仍然想使用你放的 arg .如果您有兴趣使用此功能进行漂亮的打印,我发现这个答案也很有用: stackoverflow.com/a/7220510/857209replacerspacenullreplacer
36赞 Sarfraz 11/12/2010 #2

查看托马斯·弗兰克 (Thomas Frank) 的更新/更好方式:

2008 年 5 月 17 日更新:小型消毒剂 添加到 toObject-method 中。现在 toObject() 不会 eval() 字符串 如果发现任何恶意代码 它。为了提高安全性:不要设置 includeFunctions 标志设置为 true。

JSON 概念之父 Douglas Crockford 为 JavaScript 编写了最早的字符串器之一。后来,Trim Path 的 Steve Yen 写了一个不错的改进版本,我已经使用了一段时间。这是我对史蒂夫版本的更改,我想与你分享。基本上,它们源于我制作字符串器的愿望:

  • 处理和还原循环引用
  • 包括函数/方法的 JavaScript 代码(作为选项)
  • 如果需要,从 Object.prototype 中排除对象成员。
2045赞 Andris 11/12/2010 #3

所有当前的浏览器都内置了原生 JSON 支持。因此,只要您不处理像 IE6/7 这样的史前浏览器,您就可以像这样轻松地做到这一点:

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

评论

7赞 AabinGunz 7/21/2011
下载此脚本以便工作JSON.stringify(j);
2赞 georgelviv 5/4/2015
在 nodejs 上工作,因为 node 使用相同的引擎
28赞 Andris 9/11/2015
这个答案是在 IE9 发布前一年发布的,所以在撰写本文时,IE8 确实是一个现代浏览器,或者至少它是最新的 IE。
0赞 Ritesh 6/7/2017
JSON.stringify 不转换嵌套对象。有什么解决方案..??
11赞 Jacek Gzel 1/10/2018
如果你需要更多可读的json字符串,你可以使用空格参数,比如var formattedJSON = JSON.stringify(j, null, 2);
9赞 Ariel Cabib 9/11/2015 #4

如果你使用的是 AngularJS,'json' 过滤器应该会这样做:

<span>{{someObject | json}}</span>
7赞 Rohit Kumar 10/12/2015 #5

为此定义了一个自定义,直到我们从 stringify 方法中做奇怪的事情

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/

评论

1赞 alphakevin 1/19/2016
不转义带有引号的字符串,例如:字符串中的“A \”
2赞 Manuel Romeiro 2/9/2018
该自定义代码非常不完整。不支持数组、对象和特殊字符。示例: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”} 是错误的!
0赞 Rohit Kumar 6/17/2020
当然,这段代码只是玩代码的一个例子。我们应该始终使用 stringify ...JS已经为我们完成了这项工作
33赞 Aravindan Venkatesan 11/20/2015 #6

您可以使用 JSON.stringify() 方法将 JSON 对象转换为 String。

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

对于反向处理,您可以使用 JSON.parse() 方法将 JSON String 转换为 JSON 对象。

评论

0赞 David Lavieri 2/15/2017
感谢您添加相反的流程。
10赞 Nazrul Islam 5/8/2016 #7

在 angularJS 中

angular.toJson(obj, pretty);

OBJ: 要序列化为 JSON 的输入。

pretty(可选):
如果设置为 true,则 JSON 输出将包含换行符和空格。如果设置为整数,则 JSON 输出将包含每个缩进的空格数。

(默认值:2)

7赞 Sam 9/14/2016 #8

我遇到了字符串耗尽内存的问题,其他解决方案似乎不起作用(至少我无法让它们工作),这就是我偶然发现这个线程的时候。多亏了 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 会给你你的字符串表示(就像这个线程中提到的其他时间一样),除非你有一个大对象,这也应该有效 - 只要确保你构建它以满足你的需求 - 我需要它有一个名字而不是数组

3赞 Alongkorn 10/14/2016 #9

你可以像这样使用原生的 stringify 函数

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

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

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

14赞 Vignesh Murugan 11/15/2016 #10

JSON.stringify(j, null, 4)会给你美化的JSON,以防你也需要美化

第二个参数是 replacer。它可以用作过滤器,您可以在字符串化时过滤掉某些键值。如果设置为 null,它将返回所有键值对

5赞 Subroto Biswas 11/28/2016 #11

沃金。。。简单易用

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

谢谢

2赞 KARTHIKEYAN.A 11/29/2016 #12

如果要获取字符串格式的 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}'
9赞 Du-Lacoste 2/13/2017 #13

JSON.stringify将 Javascript 对象转换为 JSON 文本,并将该 JSON 文本存储在字符串中。

转换是 Object 到 String

JSON.parse将 JSON 文本字符串转换为 Javascript 对象。

转换是 String 到 Object

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

2赞 Pavel Netesa 3/3/2018 #14

对于在 Node JS 中进行调试,您可以使用 util.inspect()。它更适合循环引用。

var util = require('util');
var j = {name: "binchen"};
console.log(util.inspect(j));
2赞 Hauke 5/30/2018 #15

现有的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 ();

        // When the actual variable was a number, it was returning a number between quotation marks
        // return str.match(/^\".*\"$/) ? str : '"' + str.replace(/"/g, '\\"') + '"';

        // Now, we are verifing if is a number and, if it is, we remove the quotation marks
        str = str.match (/^\".*\"$/) ? str : '"' + str.replace (/"/g, '\\"') + '"';

        if (isNaN (str.replace (/^["]/, '').replace (/["]$/, '')))
            return str;
        else
            return str.replace (/^["]/, '').replace (/["]$/, '');
    }

    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;
}
1赞 Rahul Choudhary 10/3/2018 #16
So in order to convert a js object to JSON String: 

将对象转换为字符串的简单语法是

JSON.stringify(value)

完整语法为:JSON.stringify(值[, 替换器[, 空格]])

让我们看一些简单的例子。请注意,整个字符串得到 双引号,如果出现以下情况,则字符串中的所有数据都会转义 需要。

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赞 Kamil Kiełczewski 10/16/2019 #17

只需用于进行此类转换 - 但请记住,具有值的字段不会包含在 json 中JSON.stringifyundefined

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

var s=JSON.stringify(j);

console.log(s);

字段从输出 json 中“消失”remember

评论

1赞 Mohammad Ghonchesefidi 1/8/2020
你刚刚拯救了我的一天。我无法保存我的对象。具有未定义值的字段不会包含在 JSON 中的键解决了我的问题!
0赞 Deepak Agrawal 12/10/2019 #18

JSON.stringify(param1, param2, param3);

什么:-

param1 --> 要转换为 JSON 的值

param2 -->函数以您自己的方式进行字符串化。或者,它充当一个白名单,需要将对象包含在最终 JSON 中。

param3 --> 一个 Number 数据类型,指示要添加的空格数。最多允许 10 个。

0赞 yash 2/24/2020 #19

转换 str => obj

const onePlusStr = '[{“品牌”:“一加”},{“model”:“7T”}]';

const onePLusObj = JSON.parse(onePlusStr);

转换 obj => str

const onePLusObjToStr = JSON.stringify(onePlusStr);

JS中JSON解析的参考: JSON.parse() : 点击 JSON.stringify() :
点击

评论

0赞 yash 2/25/2020
JS中JSON解析的参考: JSON.parse() : w3schools.com/js/js_json_parse.asp JSON.stringify() : w3schools.com/js/js_json_stringify.asp
-2赞 bodich 3/10/2020 #20

非常易于使用的方法,但不要在发布中使用它(因为可能存在兼容性问题)。

非常适合您这边的测试。

Object.prototype.toSource()

//Usage:
obj.toSource();
0赞 Mehadi Hassan 6/11/2020 #21

最流行的方式如下:

var obj = {name: "Martin", age: 30, country: "United States"};   
// Converting JS object to JSON string
var json = JSON.stringify(obj);
console.log(json);

0赞 owenc 6/16/2022 #22

你可以使用 JSON.stringify() 来做到这一点

评论

2赞 Eric Aya 6/16/2022
这与另一个答案中的解决方案相同。
2赞 Lesnier Gonzalez 9/5/2022 #23

使用本机函数 JSON.stringify()

let userJson = {
name : 'Richard'
}
let userJsonString = JSON.stringify(userJson)