为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 typeof JSON.parse 返回字符串

为什么 typeof JSON.parse 返回字符串

catspeake 2022-08-04 17:08:51
简要说明我将 bottle.py 用作简单的Web服务器,并且我正在渲染javascript,将其传递给python字典,然后在javascript文件中,我想向对象添加另一个字段,并使用结果发出post请求。但是,当我记录数据类型时,datain返回字符串,因此我无法将新属性添加到对象中。likePost()另外,我尝试没有并返回以下错误:JSON.Stringify()Unexpected token ' in JSON at position法典    function commentPost(post){        var comment = prompt("Comment:", "Great post I like it")        data = JSON.parse(JSON.stringify(post))        console.log(typeof data)                      // RETURNS STRING        data.comment = comment                        // THIS DOESN'T WORK        fetch("/post", {            method: "POST",             body: JSON.stringify(data)        }).then(res => {            likePost(data)               });    }控制台.log(帖子) 控制台.log(帖子类型){'hashtag': 'landscapephotography', 'shortcode': 'B_5b0IWqrRU', 'display_url': 'https://scontent-mad1-1.cdninstagram.com/v/t51.2885-15/e35/s1080x1080/95910887_233194497953707_7239044831960646903_n.jpg?_nc_ht=scontent-mad1-1.cdninstagram.com&_nc_cat=107&_nc_ohc=i179pDQmui0AX82O3nB&oh=676ca07cba3af57944abcba4d3a27ad2&oe=5EDE8D74', 'thumbnail_src': 'https://scontent-mad1-1.cdninstagram.com/v/t51.2885-15/sh0.08/e35/s640x640/95910887_233194497953707_7239044831960646903_n.jpg?_nc_ht=scontent-mad1-1.cdninstagram.com&_nc_cat=107&_nc_ohc=i179pDQmui0AX82O3nB&oh=1ff2ac0b031bcc7cbdbb64b2a661ea1b&oe=5EDF0745', 'is_video': False, 'comments_disabled': False, 'caption': 'Photo by Jelen Girona on May 07, 2020.', 'comments_count': 0, 'timestamp': 1588877630, 'owner': '15642627659', 'likes_count': 0}string
查看完整描述

1 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

虽然你的是那么你只需要使用.typeof poststringJSON.parse


这失败的原因是因为有效的JSON只能有双引号(也请在此处查看完整的JSON语法)。尝试:


JSON.parse(post.replace(/\'/g, '"'))

对于您的情况(我刚刚看到您更新的问题),您的来源似乎返回时第一个字母大写,并且在尝试上述操作后您将收到新的错误。False


未捕获的语法错误:JSON 中位置 617 处的意外令牌 F


如果您无法使API正确返回它,那么您也必须这样做。.replace


const post = "{'hashtag': 'landscapephotography', 'shortcode': 'B_5b0IWqrRU', 'display_url': 'https://scontent-mad1-1.cdninstagram.com/v/t51.2885-15/e35/s1080x1080/95910887_233194497953707_7239044831960646903_n.jpg?_nc_ht=scontent-mad1-1.cdninstagram.com&_nc_cat=107&_nc_ohc=i179pDQmui0AX82O3nB&oh=676ca07cba3af57944abcba4d3a27ad2&oe=5EDE8D74', 'thumbnail_src': 'https://scontent-mad1-1.cdninstagram.com/v/t51.2885-15/sh0.08/e35/s640x640/95910887_233194497953707_7239044831960646903_n.jpg?_nc_ht=scontent-mad1-1.cdninstagram.com&_nc_cat=107&_nc_ohc=i179pDQmui0AX82O3nB&oh=1ff2ac0b031bcc7cbdbb64b2a661ea1b&oe=5EDF0745', 'is_video': False, 'comments_disabled': False, 'caption': 'Photo by Jelen Girona on May 07, 2020.', 'comments_count': 0, 'timestamp': 1588877630, 'owner': '15642627659', 'likes_count': 0}"


const postObject = JSON.parse(post.replace(/\'/g, '"').replace(/False/g, 'false'));

console.log(postObject);


我建议你也检查一下。也许您的源代码/API/后端也会返回它,第一个字母大写,并导致您的代码在以后中断。true


查看完整回答
反对 回复 2022-08-04
  • 1 回答
  • 0 关注
  • 241 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信