我怎样才能使这个 JSON 数据在 API 上可用?

Posted

技术标签:

【中文标题】我怎样才能使这个 JSON 数据在 API 上可用?【英文标题】:How could I make this JSON data usable on an API? 【发布时间】:2021-11-12 14:50:46 【问题描述】:

JSON 数据目前看起来像这样的字符串:

["ID","姓名","年龄"],["212","大卫","38"]

我希望它看起来像这样:

"ID":"212","姓名":"大卫","年龄":"38"

提前感谢您的帮助

我找到了这段代码,它解决了大部分问题

var columns = ["ID", "Name", "Age"];
var rows = ["212", "David", "38"];
var result =  rows.reduce(function(result, field, index) 
  result[columns[index]] = field;
  return result;
, )

console.log(result);

【问题讨论】:

它已经是可用的 JSON。您发布的第一个字符串是 100% 有效的 JSON。 对不起,我对此有点陌生,好的,我明白你的意思,但我怎么能让 JSON 看起来像这样 "ID":"212","Name":"David" "年龄":"38" 它已经是 JSON,就像那样。也许如果您发布一些代码,更容易看出您的实际问题是什么。 我认为他想要一个 JSON 对象,其结构类似于 csv 结构。 我编辑了这个问题,让它更有意义 【参考方案1】:

让我们说 让 jsonVal = [["ID","Name","Age"],["212","David","38"], ["212","David","38"]] 第 0 个索引将有键,剩下的是数据

let newJsonVal = []  ​
 for (let i =1; i< jsonVal.length-1; i++) 
    ​let newObject =
     ​jsonVal[i].map((d,j) =>  
       ​newObject[jsonVal[0][j] = d;
      ​)
    newJsonVal.push(newObject)
 

newJsonVal 将有你需要的对象数组

【讨论】:

【参考方案2】:

您可以通过以下步骤做到这一点:

    从数组中提取键和值 将它们压缩到键匹配值 使用 Object.fromEntries 创建对象键值
let obj = [["ID","Name","Age"],["212","David","38"]]
let [keys, values] = obj;
let zipped = keys.map((key, i)=>[key, values[i]]);
let output = Object.fromEntries(zipped);
console.log(output);

【讨论】:

这段代码运行良好,我必须更新到最新版本的 nodejs 才能使 fromEntries 函数正常工作。 感谢 Mehdi Taher 的回答,非常感谢。 我很高兴它成功了,快乐的编码;)

以上是关于我怎样才能使这个 JSON 数据在 API 上可用?的主要内容,如果未能解决你的问题,请参考以下文章

我正在尝试通过外部 api 从 json 数据中获取键值对并使用 angular 和 typescript 显示它。我怎样才能做到这一点?

如何构造循环API调用以使JSON结果可用?

Api 将日期时间作为数字返回,我怎样才能使它成为正确的日期?

微信的公众平台api怎样才能接入成功?

我怎样才能通过在请求中传递特定参数来获取它们? SpringBoot API

cxf 开发的 WebService,Web项目怎样才能使用 JSON格式访问,并返回JSON格式数据。