类型“{}”缺少类型 'Datos[]' 中的以下属性:在 Angular 中从 JSON 实例化列表时

Type '{}' is missing the following properties from type 'Datos[]': when instantiating list from JSON in Angular

我在将 JSON 数据导入我的 angular 应用程序时遇到问题。

我在做什么:

  1. 将json文件导入一个变量:

import _datos from '../../../assets/data.json';

  1. 正如这个问题 () 的答案中所述,我正在使用 typing.d.ts 文件以便能够读取信息。

  2. 声明接口以提高代码的可读性:

export interface Datos{
  property1: String,
  property2: String,
  etc.
}
  1. 使用导入的 json 文件声明和实例化数组:
datos: Datos[] = _datos;

预期结果

变量“datos”应该将 JSON 文件的内容作为一个数组。

实际发生了什么

类型“{}”缺少类型 'Datos[]' 的以下属性:length、pop、push、concat 和 26 more.ts(2740)。

更多信息

我之前用一个较小的 JSON 文件(这个文件每个对象大约有 26 个属性和 +100k 元素)完成了它并且工作正常。但是,这个失败了,我真的不知道为什么。

避免错误:

Type '{}' is missing the following properties from type ...

确保正在分配的对象 _datosDatos.

类型的对象数组

将对象 { .. } 分配给对象数组 [ {}, .. ] 时会发生这种情况

保存导入数组的变量需要声明如下:

_datos: Datos[] = [];

然后将您的JSON文件数据导入_datos。

我建议在将 _datos 的值分配给 datos 变量之前对其进行调试。

好吧,这是一个非常简单的错误:

JSON 文件中的 26 个属性之一未正确写入。为了使其工作,需要 JSON 文件中的属性和界面中的属性匹配。

JSON 文件是这样的:

[
    {
        "organo_de_contratacion": "Consorcio de Transportes de la Bahía de Cádiz",
        "estado_de_la_licitacion**:**": "Resuelta",
        ...

因此 : 在 属性 结束之前滑动并且不匹配接口 属性。