Угловая загрузка файла .json и преобразование в объектный класс - PullRequest
0 голосов
/ 30 апреля 2018

Мое приложение загружает файл .json пользователя pc:

app.component.html

  <div class="file btn btn-lg btn-primary">
    Upload
    <input type="file" class="upload" (change)="changeListener($event.target.files)">
  </div>

В моем app.component.ts

  user: User;
  userArray: Array<User>;
  fileList: Array<any>;

  ngOnInit() {
   this.user = new User();
   this.userArray= Array<User>();
   this.fileList= Array<any>();
  }

ТОГДА метод получения файла:

  public changeListener(files: FileList) {
    if (files && files.length > 0) {
      let file: File = files.item(0);

      let reader: FileReader = new FileReader();
      reader.readAsText(file);
      reader.onload = (e) => {
        let loadFile: string = reader.result;
        JSON.stringify(loadFile)
        this.fileList = loadFile.split('\r\n');

    if (this.fileList.length > 0) {
      for (const i of this.fileList) {
        if (i !== null) {

          this.user = i; //--I THINK HERE IS MY PROBLEM--
          this.userArray.push(this.user); //----HERE IS UNDEFINED

          console.log('user - ', this.user); 
        } else {
          console.log('NULL');
        }
      }
        console.log('userArray - ', this.userArray.length); //---BUT HERE SHOW SIZE OF .JSON LOADED
      }
    }
  }

Мой вопрос: Как преобразовать 'i' в объекте User? Или fileList в массиве пользователя?

мой user.class имеет те же свойства json.file ... Я вижу много ответов, но ничего не работает.

Мой файл json представляет собой список:

{"DATE ":"22/04/2018","HOUR ":"03:00:55","YEAR ":2014,"NUM_TURN (*) ":1,"DESC_E (*) ":"Gerais 2014","SIGLA_UF ":"SE","SIGLA_UE (*) ":"SE", ...e more others 15 properties}

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

fileList - это массив строк, поэтому вам нужно преобразовать i, который является строкой (хотя с типом any в данном случае), в объект json:

this.user = JSON.parse(i);
0 голосов
/ 30 апреля 2018

Разве вы не используете fileList вместо this.fileList?

В любом случае я бы попытался разыграть i:

this.user = i as User;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...