【问题标题】:Acces JSON Object in google cloud functions在谷歌云函数中访问 JSON 对象
【发布时间】:2020-04-19 13:16:02
【问题描述】:

我正在尝试解析谷歌云函数中的响应。 文本响应是: {"data":{"Object_Create":{"id":107}}} 并存储在 var body 中。

我这样转换它: var obj= JSON.parse(body)

然后我尝试访问该对象: var Object_Create= obj.data.Object_Create

并且有效。

问题是当我尝试获取 id 字段时: var id= obj.data.Object_Create.id 因为它返回ReferenceError: id is not defined

我从在线 JS 编辑器中尝试了相同的代码,它运行没有任何问题,因此它似乎与云平台有关。 有人遇到过同样的问题吗?

【问题讨论】:

    标签: node.js json function parsing cloud


    【解决方案1】:

    不需要解析该响应,因为它是一个 Javascript 对象,这意味着不需要额外的处理。

    如果你尝试解析它,它应该会抛出一个语法错误

    SyntaxError: Unexpected token o in JSON at position 1
    

    您可以通过以下方式访问它

    console.log(body.data.Object_Create.id)
    

    我想你实际上想使用那个键,所以你可以

    const { Object_Create } = body.data
    
    console.log(Object_Create.id)
    

    【讨论】:

    • 嘿,感谢您的回复,但我认为这不是正确的解决方案。我的意思是,如果我尝试在不将其转换为 json 对象的情况下访问它,那将是一个 execpcion。 parsgin 是正确的,因为它允许我访问''Object_Create'',问题是我无法访问嵌套字段''id''
    • 谢谢,但是您将对象创建为 JSON 对象,我将它作为字符串获取,并且需要对其进行解析。解析很顺利,因为我在其他平台上使用它,并且可以访问 data.Object_create,问题是如果我将 .id 放在末尾以获取数字,它会显示“未定义”。无论如何,我用一个肮脏的解决方法解决了它,我将 data.Object_Create 传递给一个正则表达式函数并提取包含的数字,不是最好的解决方案,但可以工作
    • var obj=JSON.parse(body).data; console.log(obj.Object_Create); 这行得通,console.log(obj.Object_Create.id) 这不行
    • 嗯,这不是你的问题所说的。我没有看到这些括号周围的任何引号......
    • 抱歉浪费您的时间,我认为''文本响应是:''和''我这样转换它: var obj= JSON.parse(body) 然后我尝试访问对象:var Object_Create= obj.data.Object_Create 并且可以工作。'' 就足够了。无论如何,谢谢你的努力!
    猜你喜欢
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 2023-04-06
    相关资源
    最近更新 更多