如何从 JSON 对象中获取特定的键值

Posted

技术标签:

【中文标题】如何从 JSON 对象中获取特定的键值【英文标题】:How do I get a specific key value from JSON object 【发布时间】:2022-01-21 16:16:35 【问题描述】:

这是我第一次使用任何类型的 API,而且我刚刚开始使用 JS。我想在服务器托管面板中获取服务器的状态,为此我需要登录(API/Core/Login),获取名为 sessionID 的键的值,然后将该值发送到 /API/Core /GetUpdates 以获得响应。当尝试将 sessionID 传递给 GetUpdates 时,它发送 undefined 而不是 sessionID,我猜我在尝试引用键值时做错了。这是我的代码:

var loginurl = "https://proxyforcors.workers.dev/?https://the.panel/API/ADSModule/Servers/83e9181/API/Core/Login";

var loginRequest = new XMLHttpRequest();
loginRequest.open("POST", loginurl);

loginRequest.setRequestHeader("Accept", "text/javascript");
loginRequest.setRequestHeader("Content-Type", "application/json");

loginRequest.onreadystatechange = function() 
  if (loginRequest.readyState === 4) 
    console.log(loginRequest.status);
    console.log(loginRequest.responseText);
  
;

var logindata = '"username":"API", "password":"password", "token":"", "rememberMe":"true"';

loginRequest.send(logindata);

var statusurl = "https://proxyforcors.workers.dev/?https://the.panel/API/ADSModule/Servers/83e9181/API/Core/GetUpdates";

var statusreq = new XMLHttpRequest();
statusreq.open("POST", statusurl);

statusreq.setRequestHeader("Accept", "text/javascript");
statusreq.setRequestHeader("Content-Type", "application/json");

statusreq.onreadystatechange = function() 
  if (statusreq.readyState === 4) 
    console.log(statusreq.status);
    console.log(statusreq.responseText);
  
;

var statusdata = `"SESSIONID":"$loginRequest.responseText.sessionID"`; // Line I'm having problems with

statusreq.send(statusdata);

console.log(loginRequest.responseText.sessionID)

这是 /API/Core/Login 的响应

"success":true,"permissions":[],"sessionID":"1d212b7a-a54d-4e91-abde-9e1f7b0e03f2","rememberMeToken":"5df7cf99-15f5-4e01-b804-6e33a65bd6d8","userInfo":"ID":"034f33ba-3bca-47c7-922a-7a0e7bebd3fd","Username":"API","IsTwoFactorEnabled":false,"Disabled":false,"LastLogin":"\/Date(1639944571884)\/","GravatarHash":"8a5da52ed126447d359e70c05721a8aa","IsLDAPUser":false,"result":10

任何帮助将不胜感激,我已经坚持了一段时间。

【问题讨论】:

您需要调用JSON.parse()将JSON转换为对象。 你必须把代码放在回调函数中,而不是放在顶层。 【参考方案1】:

responseTextJSON 响应的文本表示形式。

要么使用JSON.parse(logindata.responseText)获取JSON数据,要么使用logindata.responseJSON

【讨论】:

我添加了var obj = JSON.parse(loginRequest.responseText);,但我得到了Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>) 通过将最后 3 行放在第一个函数中来修复

以上是关于如何从 JSON 对象中获取特定的键值的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个模式中获取特定的键值,通过比较它们是不是具有相同的键值?

如何获取自己键盘上按键的键值(KeyCode)

我如何从 swift4 中的字符串中获取特定的键值

在对象的 json 数组中找到一个键值并返回另一个带有角度的键值

当用户从 Vue.js 中的 JSON 对象中选择第一个键时,如何显示剩余的键值?

怎样从对象中获取键值并保存在对象中