【问题标题】:Parse JSON output and extract value in javascript [duplicate]在javascript中解析JSON输出并提取值[重复]
【发布时间】:2019-11-29 15:02:58
【问题描述】:

我现在从服务中输出的 json 是

[{"errno": "0","num_keys": "0"},
 {"errno": "1","num_keys": "2"},
 {"errno": "3","num_keys": "4"},
 {"errno": "5","num_keys": "6"}]

在此,如果键 errno 和 num_keys,我想提取每个值。

我正在使用以下代码:

var request = new sn_ws.RESTMessageV2();
request.setEndpoint("url");
request.setHttpMethod('GET');
request.setRequestHeader('Content-Type','application/json');
request.setRequestHeader('X-IPM-Username','some name');
request.setRequestHeader('X-IPM-Password','some password');
var response = request.execute();
var result=response.getBody();

这里如何提取值?

var result=response.json();

【问题讨论】:

  • 请不要在 GET 请求中发送密码。 HTTP 动词语义是 @#%$ed。
  • @JaredSmith,谢谢。这里我只使用编码密码,只是为了显示我这样粘贴的代码
  • 我不确定为什么该请求与此处相关。如果你有一些 JSON,并且想要提取一些数据,那么 JSON 来自哪里并不重要。
  • @Jared 如果它是一个需要身份验证的 API,并且它不是 登录操作(即,您可以获得正确用户名 + 密码的令牌),那么绝对有这没有错。可以说 API 应该使用 Authorization 标头而不是 X-...,但无论如何……
  • 我试过了,你的响应正文示例末尾有额外的逗号,会破坏数组:[ a, b, ]

标签: javascript json servicenow servicenow-rest-api


【解决方案1】:

这可能以前被问过,但你的问题本身就有答案。您需要使用JSON.parse() 将您的 JSON 字符串解析为 JavaScript 对象,可能是这样的:

var result = JSON.parse(response.json());

根据您的示例响应,您生成的对象将是一个可以访问或迭代的对象数组:

var error0 = result[0];

请注意,如果您的 HTTP 请求失败或未返回格式正确的 JSON,您可能会遇到错误。

【讨论】:

  • 我尝试了这种解析方法,它给出的结果为**** Script: [object Object],[object Object],[object Object],[object Object] 当我使用 var result 打印它时=JSON.parse(response.getBody()); gs.print(结果);
  • @impika 好像解析成功了。现在你只需要遍历数组,然后对这些对象做任何你需要做的事情。
  • @impika 你走在正确的道路上!这是因为生成的对象是一个对象数组,必须遍历数组才能访问数据。 w3schools.com/js/js_arrays.asp
【解决方案2】:

简单解析:

var json = '{"myjsons":[{"errno": "0","num_keys": "0"},{"errno": "2","num_keys": "3"}]}';


var jsonData = JSON.parse(json);
for (var i = 0; i < jsonData.myjsons.length; i++) {
    var myjsons= jsonData.myjsons[i];
    console.log(myjsons.errno);
     console.log(myjsons.num_keys);
}

也是这样的:

var arr =  [{"errno": "0","num_keys": "0"},
 {"errno": "1","num_keys": "2"},
 {"errno": "3","num_keys": "4"},
 {"errno": "5","num_keys": "6"}];

arr.forEach(function(value){
  console.log('errno: ' + value.errno);
  console.log('num_keys: ' + value.num_keys);

});

【讨论】:

  • 如果一个键值对块可能适用,但在我的情况下它是 4 个值块
  • @impika 看看我的更新
  • jsonData.myjsons.length 中的“myjsons”是什么?抱歉,我是 javascript 的初学者
  • @impika 使用完整的 json 更新您的帖子
  • 它和我发布的一样,它没有分配任何变量/键。我用获取请求点击 URL,输出就是我发布的内容
猜你喜欢
  • 2016-12-12
  • 2023-03-08
  • 1970-01-01
  • 2017-07-05
  • 2021-03-21
  • 2012-04-10
  • 2017-01-09
  • 2012-12-11
  • 1970-01-01
相关资源
最近更新 更多