Json-server 错误:数据必须是对象。需要将 JSON 数组更改为 JSON 对象
Posted
技术标签:
【中文标题】Json-server 错误:数据必须是对象。需要将 JSON 数组更改为 JSON 对象【英文标题】:Json-server Error: Data must be an object. Need to change JSON Array to JSON Object 【发布时间】:2020-01-01 16:04:49 【问题描述】:我无法启动我的 json-server,因为 REST API: 给了我一个 JSON 数组,但我需要一个 JSON 对象来运行 json-server。是否可以使用 JSON 数组运行 json-server,或者我可以构建自己的 db.json?
我尝试将 JSON 数组放入 db.json 文件并删除方括号,但因为它之前是一个数组,所以逗号会给我一个错误。所以手动修改 db.json 也是不可能的。
npm json-server --port 3001 --watch db.json
触发此错误消息:
错误:数据必须是对象。找到对象。见 以https://github.com/typicode/json-server 为例。
更新: 我只是用花括号将数组包裹起来,并向其中添加了一个属性,如下所示:
"countries": ["name": ...
...
]
现在我在 db.json 中有一个 JSON 对象,我可以运行 json-server。
【问题讨论】:
【参考方案1】:万一其他人来了。假设您有一系列国家名称,您希望它的形式为
"countries": [ "id": 1, "name": "Narnia", "id":2, "Sacoridia", ...]
服务器可以模拟多个“表”,因此您可以添加另一行,例如
"cities": [ "id":1, "country_id": 1, "name":"Cair Paravel", "capital":1,...]
【讨论】:
【参考方案2】:由于数据的格式为["name":"country name", ..., "name":"country name 2", ..., ... ]
,因此您必须通过提取例如名称或您想要的任何属性作为键来转换它,以获得格式 "country name": ... , "country name 2": ... ,...
。
例如,这可以用 javascript 来完成:
function transform(data)
var transformedObject = ;
for(var i = 0; i < data.length; i++)
transformedObject[data[i].name] = data[i];
return transformedObject;
【讨论】:
以上是关于Json-server 错误:数据必须是对象。需要将 JSON 数组更改为 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章
向 json-server 添加新对象; AngularJS