📅  最后修改于: 2023-12-03 15:01:46.217000             🧑  作者: Mango
在 JavaScript 中,有时我们需要将对象或数据结构解析为字符串以便传递或展示。这时我们可以借助一些内置函数以及一些库来实现这个功能。
JSON.stringify()
JavaScript 中内置函数 JSON.stringify()
可以将一个对象序列化为 JSON 格式的字符串。它的返回值是一个字符串,包含了对象的序列化内容。
const myObj = {
name: 'John',
age: 30,
city: 'New York'
};
const myJSON = JSON.stringify(myObj);
console.log(myJSON); // 输出: {"name":"John","age":30,"city":"New York"}
需要注意的是,如果对象中包含了函数、日期、正则表达式等 JavaScript 里的特殊类型,实际上 JSON.stringify()
不会对它们进行序列化。
JSON.parse()
与 JSON.stringify()
相对应的是 JSON.parse()
,它可以将 JSON 字符串转换为原始的 JavaScript 对象或数组。 JSON.parse()
的返回值是一个 JavaScript 对象或数组。
const myJSON = '{"name":"John","age":30,"city":"New York"}';
const myObj = JSON.parse(myJSON);
console.log(myObj); // 输出: {name: "John", age: 30, city: "New York"}
需要注意的是,如果 JSON 字符串中含有非法的语法或格式,将会导致 JSON.parse()
出错。
querystring
模块querystring
模块是 Node.js 内置模块,它提供了一些工具函数,用于处理 URL 查询字符串。其中包括将查询字符串解析为 JavaScript 对象或字符串。
const querystring = require('querystring');
const myObj = {
name: 'John',
age: 30,
city: 'New York'
};
const myQuery = querystring.stringify(myObj);
console.log(myQuery); // 输出: name=John&age=30&city=New+York
const myParsedObj = querystring.parse(myQuery);
console.log(myParsedObj); // 输出: { name: 'John', age: '30', city: 'New York' }
需要注意的是,querystring.parse()
将每个值都解析为字符串类型。
xml2js
模块xml2js
是一个基于 Node.js 的 XML 解析器库,它可以将 XML 解析为 JavaScript 对象格式。如果需要展示一个 XML 内容,那么也可以使用它将 JavaScript 对象反序列化为 XML 字符串。
const xml2js = require('xml2js');
const myXML = `
<person>
<name>John</name>
<age>30</age>
<city>New York</city>
</person>
`;
xml2js.parseString(myXML, (err, result) => {
console.dir(result);
});
/*
* 输出:
* { person: { name: [ 'John' ], age: [ '30' ], city: [ 'New York' ] } }
*/
const myObj = {
person: {
name: ['John'],
age: ['30'],
city: ['New York']
}
};
const builder = new xml2js.Builder();
const myXML2 = builder.buildObject(myObj);
console.log(myXML2);
/*
* 输出:
* <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
* <person>
* <name>John</name>
* <age>30</age>
* <city>New York</city>
* </person>
*/
需要注意的是,xml2js.parseString()
函数是一个异步函数,并且需要传入一个回调函数(callback)。而反序列化为 XML 字符串的函数 builder.buildObject()
接收的参数为 JavaScript 对象。
以上是一些常用的 JavaScript 解析为字符串的方法。使用这些方法,可以轻松地将一个对象或数据结构转换为字符串,并且方便地传递或展示它们。