用typescript导入json文件

时间:2015-10-20 14:35:55

标签: json typescript

我需要使用typescript导入数据类型为json的文件。数据是:

{
"italia": [
    {
        "regione": "Abruzzo",
        "capoluoghi": [
            {
                "citta": "Chieti",
                "sigla": "CH"
            },
            {
                "citta": "L'Aquila",
                "sigla": "AQ"
            },
            {
                "citta": "Pescara",
                "sigla": "PE"
            },
            {
                "citta": "Teramo",
                "sigla": "TE"
            }
        ]
    },{
        "regione": "Basilicata",
        "capoluoghi": [
            {
                "citta": "Matera",
                "sigla": "MT"
            },
            {
                "citta": "Potenza",
                "sigla": "PZ"
            }
        ]
    }, ...

我建立的课程是:

class Capoluoghi {
    citta: string;
    sigla: string;
  }
class Italia {
    regione: string;
    capoluoghi: Array<Capoluoghi>;
  }
class RootObject {
    italia: Array<Italia>;
  }

导入数据的功能:

function ReadRegion() {
  $.getJSON("italia.json", function (data) {
    var regionRead= new RootObject();

    var itemRead = [];
    data.italia.forEach(s => {
      itemRead = s;

      var italiaRead= new Italia();

      italiaRead["regione"] = s.regione;

      s.capoluoghi.forEach(p => {
        var capoluoghiRead= new Capoluoghi();

        capoluoghiRead["citta"] = p.citta;
        capoluoghiRead["sigla"] = p.sigla;

        italiaRead.capoluoghi.push(capoluoghiRead);
      })
      regionRead.italia.push(italiaRead);
    });  
  });
}

但不幸的是它总是失败,尤其是当“italiaRead”中的数量对象“capoluoghiRead”时。

我哪里错了? 戴夫

1 个答案:

答案 0 :(得分:1)

问题是当实例化类时,属性不会被初始化。因此,当您实例化Italia类时,属性capoluoghi不是数组。 这同样适用于RootObject类。

  1. 您必须手动将其初始化为空数组
  2. 或者您需要在类中创建一个构造函数,将该属性初始化为空数组([])。
  3. for /F