ChatGPT解决这个技术问题 Extra ChatGPT

将 JS 对象转换为 JSON 字符串

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

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

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

'{"name":"binchen"}'
JSON.stringify() 是您正在寻找的方法。
总有第一次你必须学习它。
JSON.stringify 也是复制对象的好方法

d
double-beep

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

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


下载 this script 以使 JSON.stringify(j); 工作
在 nodejs 上工作,因为 node 使用相同的引擎
这个答案是在 IE9 发布前一年发布的,所以在撰写本文时 IE8 确实是一个现代浏览器,或者至少它是可用的最新 IE。
JSON.stringify 不转换嵌套对象。任何解决方案..?
如果您需要更具可读性的 json 字符串,您可以使用 var formattedJSON = JSON.stringify(j, null, 2); 等空格参数
u
user3840170

使用 json2.js 中的 JSON.stringify() 或大多数现代浏览器中的原生。

JSON.stringify(value, replacer, space) 值任何 JavaScript 值,通常是对象或数组。 replacer 一个可选参数,用于确定对象值如何为对象进行字符串化。它可以是一个函数或一个字符串数组。 space 一个可选参数,指定嵌套结构的缩进。如果省略,文本将被打包,没有多余的空格。如果它是一个数字,它将指定每个级别要缩进的空格数。如果它是一个字符串(例如“\t”或“ ”),它包含用于在每个级别缩进的字符。


为了更清楚一点:replacer 可选的,因此如果您仍想使用 space 参数,请将 null 放在 replacer 中。如果您有兴趣使用此功能进行漂亮的打印,我发现此答案也很有用:stackoverflow.com/a/7220510/857209
T
TRiG

查看 Thomas Frank 的更新/更好的方法:

重新访问 JSON 字符串化

2008 年 5 月 17 日更新:向 toObject 方法添加了小型消毒剂。现在 toObject() 如果在其中发现任何恶意代码,将不会 eval() 字符串。为了更高的安全性:不要将 includeFunctions 标志设置为 true。 JSON 概念之父 Douglas Crockford 为 JavaScript 编写了第一个字符串化器。后来,Trim Path 的 Steve Yen 写了一个很好的改进版本,我已经使用了一段时间。这是我对史蒂夫版本的更改,我想与您分享。基本上,它们源于我制作字符串化器的愿望:处理和恢复循环引用包括函数/方法的 JavaScript 代码(作为选项),如果需要,从 Object.prototype 中排除对象成员。


A
Aravindan Venkatesan

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

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

对于反向过程,您可以使用 JSON.parse() 方法将 JSON 字符串转换为 JSON 对象。


感谢您添加反向过程。
S
Samuel Liew

JSON.stringify(j, null, 4) 会为您提供美化 JSON,以防您还需要美化

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


N
Nazrul Islam

在 AngularJS 中

angular.toJson(obj, pretty);

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

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

(默认值:2)


A
Ariel Cabib

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

<span>{{someObject | json}}</span>

D
Du-Lacoste

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


C
Community

我遇到了 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 会给你你的字符串表示(就像在这个线程中提到的其他时间一样)除非你有一个大对象,这也应该工作 - 只要确保你构建它以满足你的需要 - 我需要它有一个名称而不是数组


R
Rohit Kumar

为此定义了一个自定义,直到我们从 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/


不转义带引号的字符串,例如:“a \” in a string"
该自定义代码非常不完整。不支持数组、对象和特殊字符。示例: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"} 这是错误的!
当然,这段代码只是玩代码的一个例子……我们应该总是使用 stringify……JS 已经为我们完成了这项工作
S
Subroto Biswas

沃金...易于使用

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

谢谢


A
Alongkorn

您可以像这样使用本机字符串化功能

const j={ "name": "binchen" } /** 将 json 转换为字符串 */ const jsonString = JSON.stringify(j) console.log(jsonString) // {"name":"binchen"}


K
KARTHIKEYAN.A

如果您想以字符串格式获取 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}'

P
Pavel Netesa

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

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

K
Kamil Kiełczewski

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

var j={"name":"binchen", "remember":undefined, "age": null }; var s=JSON.stringify(j);控制台.log(s);

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


你刚刚拯救了我的一天。我无法保存我的对象。具有未定义值的字段不会包含在json中的关键解决了我的问题!
W
Wansley Nery Soto

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

R
Rahul Choudhary
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"}"*/

D
Deepak Agrawal

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

什么是: -

param1 --> 要转换为 JSON 的值

param2 --> 以您自己的方式进行字符串化的函数。或者,它用作最终 JSON 中需要包含哪些对象的白名单。

param3 --> 一种数字数据类型,表示要添加的空格数。允许的最大值为 10。


y
yash

转换 str => obj

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

常量 onePLusObj = JSON.parse(onePlusStr);

转换 obj => str

常量 onePLusObjToStr = JSON.stringify(onePlusStr);

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


JS 中 JSON 解析的参考: JSON.parse() : w3schools.com/js/js_json_parse.asp JSON.stringify() : w3schools.com/js/js_json_stringify.asp
M
Mehadi Hassan

最流行的方式如下:

var obj = {姓名:“马丁”,年龄:30,国家:“美国”}; // 将 JS 对象转换为 JSON 字符串 var json = JSON.stringify(obj);控制台.log(json);


b
bodich

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

非常适合在您身边进行测试。

Object.prototype.toSource()

//Usage:
obj.toSource();

o
owenc

您可以使用 JSON.stringify() 来执行此操作


这与 this other answer 中的解决方案相同。