gpt4 book ai didi

javascript - JSON.stringify() 和 JSON.parse() 会改变数据类型吗?

转载 作者:行者123 更新时间:2023-12-02 00:06:00 24 4
gpt4 key购买 nike

👋 我需要一些帮助才能更好地理解 JSON。

当我用类对象对数组进行字符串化然后将其解析回来时,数组似乎丢失了类实例。我是否可以在解析 JSON 数据后保留该类,如果可以,如何保留?为什么会这样?

代码如下:

class Account {
constructor(site, login, pass) {
this.site = site,
this.login = login
this.pass = pass
}
}
const accounts = [
new Account("website1.com", "email1@gmail.com", "12345"),
new Account("website2.com", "email2@gmail.com", "23456")
]
console.log('BEFORE', accounts)


const string = JSON.stringify(accounts)
console.log(string)


const parseString = JSON.parse(string)
console.log('AFTER', parseString)

控制台显示如下:

BEFORE (2) [Account, Account]
{string: "[{"site":"website1.com","login":"email1@gmail.com"….com","login":"email2@gmail.com","pass":"23456"}]"}
AFTER (2) [{…}, {…}]

为了清楚起见,是否可以在 JSON.parse()` 之后添加 [Account, Account]

如果我的解释不清楚,请告诉我。非常感谢!

最佳答案

JSON 不支持对象、数组、空值、字符串、数字和 bool 值以外的类型。

如果您知道 JSON 中的内容,您可以在解析期间使用 reviver 函数。对于您的示例,这就足够了:

JSON.parse(string, (k, v) => v.hasOwnProperty('site')
? new Account(v.site, v.login, v.pass)
: v);

关于javascript - JSON.stringify() 和 JSON.parse() 会改变数据类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60611747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com