我怎样才能使这个 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 将日期时间作为数字返回,我怎样才能使它成为正确的日期?