jsjson转string

js中可以使用JSON.stringify()方法将JavaScript对象转换为JSON字符串。这个方法接收一个JavaScript对象作为参数,返回一个JSON格式的字符串。JSON.stringify()方法有两个可选参数,分别为replacer和space。其中replacer是一个函数,用于转换值,或者一个包含需要转换的属性名称的数组。space用于控制缩进符号的数量。如果你想将一个JSON字符串转换为JavaScript对象,可以使用JSON.parse()方法。

以下是一个使用JSON.stringify()方法的示例。假设我们有一个JavaScript对象,我们想将它转换为JSON字符串并将其存储在localStorage中:

var myObj = {name: "John", age: 31, city: "New York"}; var myJSON = JSON.stringify(myObj); localStorage.setItem("testJSON", myJSON);

现在,我们可以从localStorage中检索这个值并将其转换回JavaScript对象:

var text = localStorage.getItem("testJSON"); var obj = JSON.parse(text); console.log(obj.name); //输出 "John"

在这个示例中,我们首先使用JSON.stringify()方法将myObj对象转换为JSON字符串,并将其存储在localStorage中的testJSON键下。然后,我们使用localStorage.getItem()方法从localStorage中检索该值,并使用JSON.parse()方法将其转换回JavaScript对象。最后,我们输出了对象的name属性。

如果一个被序列化的对象拥有toJSON方法,那么该toJSON方法就会覆盖该对象默认的序列化行为,不是该对象被序列化,而是调用toJSON方法后的返回值会被序列化。例如:

var obj = { foo: 'foo', toJSON: function () { return 'bar'; } }; JSON.stringify(obj); // '"bar"' JSON.stringify({x: obj}); // '{"x":"bar"}'

在这个示例中,我们定义了一个对象obj,它有一个名为toJSON的方法,该方法返回字符串"bar"。当我们使用JSON.stringify()方法将该对象转换为JSON字符串时,该方法将覆盖默认的序列化行为,因此返回的值是字符串"bar"。

除了使用JSON.stringify()方法,还可以使用eval()方法来将JavaScript对象转换为JSON字符串。但是,使用eval()方法存在一些安全性问题,因为它可以执行任意的JavaScript代码。因此,不建议使用eval()方法来处理敏感数据。以下是一个使用eval()方法的示例:

var myObj = {name: "John", age: 31, city: "New York"}; var myJSON = eval("(" + JSON.stringify(myObj) + ")"); console.log(myJSON.name); //输出 "John"

在这个示例中,我们首先使用JSON.stringify()方法将myObj对象转换为JSON字符串。然后,我们将该字符串传递给eval()方法,并使用括号将其括起来,以便eval()方法将其解释为单个表达式。最后,我们输出了myJSON对象的name属性。

总之,使用JSON.stringify()方法可以将JavaScript对象转换为JSON字符串,使用JSON.parse()方法可以将JSON字符串转换为JavaScript对象。如果一个对象拥有toJSON方法,那么该toJSON方法就会覆盖默认的序列化行为。另外,使用eval()方法也可以将JavaScript对象转换为JSON字符串,但不建议使用它来处理敏感数据。