Javascript 为什么typeof JSON.parse返回字符串 简要说明

Javascript 为什么typeof JSON.parse返回字符串 简要说明,javascript,bottle,Javascript,Bottle,我正在使用blank.py作为一个简单的web服务器,我正在呈现一个javascript,向它传递一个python字典,然后在javascript文件中,我想向对象添加另一个字段,并用结果发出post请求 但是,当我在likePost()中记录数据类型时,返回字符串,因此我无法将新属性添加到对象中 我还尝试了不使用JSON.Stringify()的情况,并返回以下错误:Unexpected token'在JSON中的位置 密码 控制台日志(post) 控制台日志(post类型) string当您

我正在使用blank.py作为一个简单的web服务器,我正在呈现一个javascript,向它传递一个python字典,然后在javascript文件中,我想向对象添加另一个字段,并用结果发出post请求

但是,当我在
likePost()
中记录数据类型时,返回字符串,因此我无法将新属性添加到对象中

我还尝试了不使用
JSON.Stringify()
的情况,并返回以下错误:
Unexpected token'在JSON中的位置

密码 控制台日志(post) 控制台日志(post类型)
string

当您的
帖子类型为
string
时,您只需要使用
JSON.parse

之所以失败,是因为一个有效的JSON只能有(同时检查完整的JSON语法)。尝试:

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

但是对于您的情况(我刚刚看到了您更新的问题),您的源代码似乎返回
False
,第一个字母大写,您在尝试上述操作后将得到一个新错误

未捕获的SyntaxError:JSON中617处的意外标记F

如果你不能让你的API正确返回它,你将不得不
。同时替换它

const post=”{'hashtag':'landscapephotography','shortcode':'b5B0IWQRRU','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,“缩略图”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.cdnistagram.com&_nc_cat=107&_nc_ohc=i179pDQmui0AX82O3nB&oh=1ff2ac0b031bcc7cbdb64b2a661ea1b&oe=5EDF0745,“是视频”:假,“评论已禁用”:假,“说明”:“Jelen Girona于2002年5月7日拍摄的照片”020.,“评论计数”:0,“时间戳”:158887630,“所有者”:1564267659,“喜欢计数”:0
const postObject=JSON.parse(post.replace(/\'/g',“')。replace(/False/g,'False'));

console.log(postObject)
为什么要对JSON进行字符串化,然后对其进行解析?是不是
post
无效的JSON?@Ashley否则它会像我说的那样给出错误的意外标记,并且post变量是python字典post是什么?分享有疑问的数据你应该记录
数据
并看一看,很可能是这个问题:听起来像
post
可能是从后端检索到的一个(序列化的)JSON字符串,在这种情况下,您应该只
JSON。解析它,而不必再次进行字符串化。当然,这只是一个猜测,没有看到它是什么。是的,就是这样。似乎Python使用单引号和大写布尔值,我必须进行替换。
    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)       
        });

    }
{'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}