【问题标题】:Access value in JSON dictionary returned from Stripe API in Meteor从 Meteor 中的 Stripe API 返回的 JSON 字典中的访问值
【发布时间】:2016-06-10 17:39:58
【问题描述】:

当 Stripe oAuth 过程失败时,Stripe API 将返回一个 JSON 字典(无论是什么)。我已将其存储为变量,但我无法访问它“error_description”中的值。 Here is a link to the relevant Stripe docs

不确定是否会有所不同,但这是在 Meteor 应用程序中的服务器端方法。

我将以下内容存储为一个名为“错误”的变量。这是我在 console.log(error); 时得到的。

{ [Error: failed [400] {   "error": "invalid_grant",   "error_description": "Authorization code does not exist: ac_7z4pnJ8ee71yJNxguV6wiINIf10fgl6j" }] stack: [Getter] }

我的问题是:如何访问“error_description”?

我写的时候好像不行

var newError = error.error_description

如果有人可以帮助我获得很棒的 error_description,谢谢!

更新 添加 .message 删除了部分响应,但我仍然无法 JSON.parse 它或访问 error_description

var error = error.message 结果

failed [400] {   "error": "invalid_grant",   "error_description": "Authorization code does not exist: ac_7z4pnJ8ee71yJNxguV6wiINIf10fgl6j" }

【问题讨论】:

    标签: javascript json meteor stripe-connect


    【解决方案1】:

    您似乎收到了error object

    你应该可以使用:

     error.message
    

    那部分似乎是一个 JSON 字符串,但它的前缀是像“失败 [400]”这样的文本,这不是后面的 JSON 的一部分。所以你应该去掉第一部分来得到 JSON 字符串,像这样:

     var json = /(\{.+)/.exec(error.message)[1]; // strip prefix
    
     var errorObj = JSON.parse(json);
    
     console.log(errorObj.error_description);     
    

    【讨论】:

    • 感谢您的回复。当我这样做时,我收到此错误:'调用方法'stripeAuth'时出现异常 SyntaxError: Unexpected token E I20160227-12:34:12.414(0)?在 Object.parse (native) I20160227-12:34:12.414(0)?在 [object Object].Meteor.methods.stripeAuth (server/stripe/methods/stripe-connect-authenticate.js:18:20)'
    • console.log 输出不是很容易理解。你能改用console.log(JSON.stringify(error.message)) 告诉我你得到了什么吗?
    • 好的,看起来这个“失败的[400]”确实存在于响应中,但不应该。它不是 JSON。它似乎给出了字符串其余部分的长度。我建议删除该前缀的代码。查看更新的答案。
    • 最后一次尝试:我更正了正则表达式中左括号的位置以剥离 JSON。如果你能试一试,我将不胜感激。
    • 不客气。顺便说一句:您可以通过投票来表达您的感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    相关资源
    最近更新 更多