从 JSON 中提取数据的 Javascript 函数?

Posted

技术标签:

【中文标题】从 JSON 中提取数据的 Javascript 函数?【英文标题】:Javascript function to pull data from JSON? 【发布时间】:2020-02-18 20:38:24 【问题描述】:

如何创建一个 javascript 函数来根据单词从 JSON 中提取数据?我正在使用任务管理器 API,并希望根据任务标题填充字段。例如:


 "data": 
    "boards": [
      
        "owner": 
          "id": 555555555
        ,
        "groups": [
          
            "id": "new_group",
            "title": "Forecasts",
            "items": [
              
                "id": "355670938",
                "name": "PIPE: Production & Client Management | STAGE: New Support Intake | NAME: TESTY | DATE: 10/27/2019 | TIME: 8:00 am | TIME ZONE: Central Time | DURATION: 60 minutes | TYPE: All Virtual | AUDIENCE VIEW:"
              
            ]
          
        ]
      
    ]
  ,
  "account_id": 55555555

我需要从 items.name 中提取的 DATE、TIME、DURATION 和 TYPE 信息。我如何设置一个函数来提取这些信息?

【问题讨论】:

Safely turning a JSON string into an object的可能重复 这个问题方式对于 Stack Overflow 的问答格式来说太宽泛了 - 这个网站不是免费的代码编写服务。我们希望至少能看到解决问题的尝试(请参阅:Minimal, Verifiable example),并提供有关您遇到问题的地方以及您的尝试未满足您的要求的原因的信息。 【参考方案1】:

假设| 从未在数据中使用过,您可以这样做:

items.name.split('|').filter(data => /^(DATE:|TIME:|DURATION:|TYPE:)/.test(data));

【讨论】:

【参考方案2】:

JSON.parse() 接受 JSON 字符串并将其转换为 JavaScript 对象。从那里您可以返回所需键的值。

【讨论】:

【参考方案3】:

您首先需要找到要从中提取信息的位置。

然后你只需在管道上拆分,然后在冒号上拆分。

let targetStr = getTree().data.boards[0].groups[0].items[0].name;
let fields = ['DATE', 'TIME', 'DURATION', 'TYPE'];

console.log(extractData(targetStr, fields));

function extractData(str, fields) 
  return str.split(/\s*\|\s*/).reduce((res, entry) => 
    let dat = entry.split(/\s*:\s*/);
    return fields.indexOf(dat[0]) > -1 ? Object.assign(res,  [dat[0]]: dat[1] ) : res;
  , );


function getTree() 
  return 
    "data": 
      "boards": [
        "owner": 
          "id": 555555555
        ,
        "groups": [
          "id": "new_group",
          "title": "Forecasts",
          "items": [
            "id": "355670938",
            "name": "PIPE: Production & Client Management | STAGE: New Support Intake | NAME: TESTY | DATE: 10/27/2019 | TIME: 8:00 am | TIME ZONE: Central Time | DURATION: 60 minutes | TYPE: All Virtual | AUDIENCE VIEW:"
          ]
        ]
      ]
    ,
    "account_id": 55555555
  ;
.as-console-wrapper 
  top: 0;
  max-height: 100% !important;

【讨论】:

以上是关于从 JSON 中提取数据的 Javascript 函数?的主要内容,如果未能解决你的问题,请参考以下文章

使用 JavaScript React Native 从 API 的 json 对象中提取数据

如何从维基百科页面中提取数据

解析 json 数据时 - 仅使用 javascript - 没有数据显示?

用 php 提取 Instagram 信息——解码然后呢?

使用Vue Javascript将JSON数据提取到html文件中的表中的问题

Ajax(从json中提取数据)