【问题标题】:Remove special character from AsyncStorage getitem data从 AsyncStorage getitem 数据中删除特殊字符
【发布时间】:2021-06-26 21:03:30
【问题描述】:

我正在获取 AsyncStorage 数据,但我正在获取特殊字符 \,当我设置项目时该字符不存在。不知道为什么要添加这个。无论如何,我正试图从我的数据中删除这个字符。我尝试了以下方法:

data = ["{\"word\":\"Cat\",\"pronunciation\":null,\"definitions\":[{\"type\":\"noun\",\"definition\":\"a small domesticated carnivorous mammal with soft fur, a short snout, and retractile claws. It is widely kept as a pet or for catching mice, and many breeds have been developed.\",\"example\":\"their pet cat\",\"image_url\":\"https://media.owlbot.info/dictionary/images/aaaaaaaaaaaaaaaaac.jpg.400x400_q85_box-42,0,943,900_crop_detail.jpg\",\"emoji\":\"????\"}]}",

var b=JSON.stringify(data);
var str = b.replace(/\\/g, '');
var final = JSON.parse(str);
console.log(final);

现在这会引发错误 Unexpected token { in JSON at position 3 。我该如何解决这个问题?

【问题讨论】:

    标签: javascript asyncstorage


    【解决方案1】:

    看起来您可能希望使用data 中的元素调用JSON.parse,而不是data 本身。 data 变量是一个数组,但其中的元素是 JSON。例如:

    const data = [...];
    const parsedData = data.map(datum => JSON.parse(datum));
    

    【讨论】:

    • 你能告诉我如何在映射你的方式时替换反斜杠吗? @LukeBailey
    • 我认为您不需要这样做,这就是 JSON.parse 所做的。它将 JSON 转换为对象。试试看,让我知道它是否有效。或者你想要一个没有反斜杠的字符串?
    • 这是正确答案。 OP 代码有错字。 AsyncStorage 将返回一个被转义的字符串——而不是一个数组。无论哪种方式,这都是有效的字符串化 JSON,并且 JSON.parse 将删除转义字符
    猜你喜欢
    • 2014-05-15
    • 2023-03-25
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 2011-04-11
    • 2016-01-23
    相关资源
    最近更新 更多