Node.js 如何读取带有 HTTP 地址元素的 JSON

Posted

技术标签:

【中文标题】Node.js 如何读取带有 HTTP 地址元素的 JSON【英文标题】:Node.js how do you read a JSON with an element that is a HTTP address 【发布时间】:2017-11-11 15:49:05 【问题描述】:

好的,我刚刚遇到了一个问题。我正在使用 Auth0 在应用程序元数据中创建具有不同权限(不仅仅是权限范围)的用户。当我解码令牌时,我得到了这个 json:


  "iss": "https://testing.auth0.com/",
  "sub": "auth0|58e7bae154941844b507eaf5",
  "aud": "OSBkLd832tIhpDe0QFJbQ9vutgB2s6cJ",
  "exp": 1497016797,
  "iat": 1496980797,
  "https://thetestgroup.com/app_metadata": 
    "is_admin": true
  

如您所见,应用元数据位于元素“https://thetestgroup.com/app_metadata”中。通常我会在我的代码 (auth.payload.iat) 中执行类似的操作来获取 iat,但是对于 app_metadata,它会因为 :. 而拒绝它。有没有获取这些数据的好方法?

【问题讨论】:

auth.payload["https://thetestgroup.com/app_metadata"] 那行不通。我仍然只是取回了整个有效载荷而不是应用元数据 对不起,确实有效。出于某种原因,我的代码走错了路,所以它总是通过一切。感谢您的帮助 【参考方案1】:

好的,让我们谈谈 javascript (node) 和你的 json

Firefox Scratchpad (Shift-F4)

var x = 
  "iss": "https://testing.auth0.com/",
  "sub": "auth0|58e7bae154941844b507eaf5",
  "aud": "OSBkLd832tIhpDe0QFJbQ9vutgB2s6cJ",
  "exp": 1497016797,
  "iat": 1496980797,
  "https://thetestgroup.com/app_metadata": 
    "is_admin": true
  

x['https://thetestgroup.com/app_metadata'].is_admin // hit run
/*
true
*/

node.js

~ $ node -v
v8.1.0
~ $ node
> var x = 
...   "iss": "https://testing.auth0.com/",
...   "sub": "auth0|58e7bae154941844b507eaf5",
...   "aud": "OSBkLd832tIhpDe0QFJbQ9vutgB2s6cJ",
...   "exp": 1497016797,
...   "iat": 1496980797,
...   "https://thetestgroup.com/app_metadata": 
.....     "is_admin": true
.....   
... 
undefined
> x['https://thetestgroup.com/app_metadata'].is_admin 
true
>

请提供mcve,因为纯 JS 和 JSON 非常乐意使用(奇怪的)键 - 如图所示。

【讨论】:

是的,你是对的。我能够获取数据我有一个不同的错误导致我没有获得正确的数据。感谢您的帮助

以上是关于Node.js 如何读取带有 HTTP 地址元素的 JSON的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 如何从角度 $http 调用 fs.close

使用 Node.js 打开 23 端口读取数据

如何使用 Node.JS 的 restify 框架解析/读取多个参数

如何使用 node.js 在重定向 url 中获取元素

node.js - 带有 base64 的 http [重复]

带有 HTTP-AUTH 的 node.js Express