JS将对象转为字符串

1. 对象转为字符串

使用JSON.stringfy()

JSON.stringify()将javascript对象转换为通过Web服务器发送数据所需的字符串。
语法:
JSON.stringify(obj)
参数:可以是对象,数组。

const obj = {
     id: 0,
     name: '张三',
     age: 12
}
const objToStr = JSON.stringify(obj)

console.log('obj:', obj)  // obj: {id: 0, name: '张三', age: 12}

console.log('objToStr:', objToStr) // objToStr: {"id":0,"name":"张三","age":12}

参数为数组(对象数组)


 var obj_to_str={ name: "GeeksForGeeks", city: "Noida", contact:2488 };

 var myJSON = JSON.stringify(obj_to_str);

console.log(myJSON) // {"name":"GeeksForGeeks","city":"Noida","contact":2488}

使用toString为什么不行

{}.toString();//报错,Unexpected token .
({}).toString();//[object Object]
({a:123}).toString();//[object Object]
Object.toString();//"function Object() { [native code] }"
function Person(){
    this.name = 'test';
}
var person1 = new Person();
person1.toString();//"[object Object]"

2. json字符串转为对象

使用parse方法

const str = '{"id":0,"name":"张三","age":12}'
const strToObj = JSON.parse(str)

console.log('str:', str) // str: {"id":0,"name":"张三","age":12}

console.log('strToObj:', strToObj) // strToObj: {id: 0, name: '张三', age: 12}
JavaScript 中,将 JSON 对象换为字符串是一个常见的操作,通常可以通过以下几种方法实现: ### 1. 使用 `JSON.stringify()` 方法 这是最标准且推荐的方法,用于将一个 JSON 对象(或 JavaScript 对象)序列化为 JSON 字符串。此方法还可以接受额外的参数来控制序列化过程,例如过滤器函数或缩进格式。 ```javascript const obj = { name: "Alice", age: 25, city: "New York" }; const jsonString = JSON.stringify(obj); console.log(jsonString); // 输出: {"name":"Alice","age":25,"city":"New York"} ``` 如果需要美化输出格式,可以传递一个数字作为缩进参数,例如 `JSON.stringify(obj, null, 2)` 会生成带有两个空格缩进的字符串[^1]。 ### 2. 使用第三方库(如 `json-stringify-safe`) 对于更复杂的对象结构,尤其是包含循环引用的对象,可以使用第三方库如 `json-stringify-safe` 来避免报错并提供更安全的序列化方式。该库提供了替代的 `stringify` 方法,能够处理 `JSON.stringify()` 无法处理的情况。 ```bash npm install json-stringify-safe ``` ```javascript const stringify = require('json-stringify-safe'); const objWithCycle = {}; objWithCycle.self = objWithCycle; const jsonString = stringify(objWithCycle); console.log(jsonString); // 输出: {"self":"[Circular]"} ``` ### 3. 自定义递归函数 在某些特殊情况下,如果希望对序列化过程进行更精细的控制,可以编写自定义的递归函数来遍历对象并生成字符串。这种方法灵活性较高,但实现起来较为复杂且容易出错。 ```javascript function customStringify(obj) { if (obj === null) return 'null'; if (typeof obj !== 'object') return JSON.stringify(obj); if (Array.isArray(obj)) { return '[' + obj.map(customStringify).join(',') + ']'; } const keys = Object.keys(obj); const pairs = keys.map(key => `"${key}":${customStringify(obj[key])}`); return '{' + pairs.join(',') + '}'; } const obj = { name: "Bob", details: { age: 30, city: "Los Angeles" } }; const jsonString = customStringify(obj); console.log(jsonString); // 输出: {"name":"Bob","details":{"age":30,"city":"Los Angeles"}} ``` ### 4. 使用 `toString()` 方法(不推荐) 虽然 JavaScript 中的对象可以通过 `toString()` 方法换为字符串,但该方法通常不会返回有效的 JSON 格式,因此不推荐用于 JSON 对象换。 ```javascript const obj = { name: "Charlie" }; console.log(obj.toString()); // 输出: [object Object] ``` ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值