【问题标题】:Json-server Error: Data must be an object. Need to change JSON Array to JSON ObjectJson-server 错误:数据必须是对象。需要将 JSON 数组更改为 JSON 对象
【发布时间】: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。

【问题讨论】:

    标签: javascript json rest 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;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多