javascript - 将 JSON 中的数组转换为 javascript 中的对象
问题描述
我有以下来自GraphQL 端点的数据:
{
"data": {
"metatags": [
{
"title": "Metatag title",
"description": "Metatag description"
}
],
"herounits": [
{
"title": "Hero unit title",
"description": "Hero unit description"
}
]
}
}
我需要将其中的数组替换为 JSON 对象,如下所示:
{
"data": {
"metatags": {
{
"title": "Metatag title",
"description": "Metatag description"
}
},
"herounits": {
{
"title": "Hero unit title",
"description": "Hero unit description"
}
}
}
}
一直在尝试不同的方法,但还没有奏效。
解决方案
您的期望对象无效,您有额外级别的对象嵌套,没有属性名称。
假设你真正想要的是:
{
"data": {
"metatags": {
"title": "Metatag title",
"description": "Metatag description"
},
"herounits": {
"title": "Hero unit title",
"description": "Hero unit description"
}
}
}
您可以通过将每个属性替换0
为数组元素中的值来实现。
let obj = {
"data": {
"metatags": [
{
"title": "Metatag title",
"description": "Metatag description"
}
],
"herounits": [
{
"title": "Hero unit title",
"description": "Hero unit description"
}
]
}
};
Object.keys(obj.data).forEach(k => obj.data[k] = obj.data[k][0]);
console.log(obj);
推荐阅读
- javascript - 如何将 Javascript 函数调用传递给 PHP 中的变量
- php - laravel:转换为 json 时缺少 Eloquent all() 数据
- angular - 使用函数在 Firebase 上提供 i18n Angular 应用程序
- dart - 在 IntelliJ IDE 中运行 Dart 示例项目时出错
- firebase - 将 BuildFire 与 Firebase api 集成
- c# - 如何在水晶报表中导出到excel时重新格式化子报表链接
- craftcms - 向管理面板添加新的客户端字段并进行管理
- javascript - 数组作为键和值,但值未定义
- excel - 在下一个用户窗体上将变量值分配给文本框
- websocket - how to add Serializable attribute on System.Net.WebSockets.WebSocket for convert to byte[]