Как обновить дату в Angular 4

Как упоминалось в предыдущих ответах, трудность преобразования json в csv заключается в том, что json-файл может содержать вложенные словари и, следовательно, быть многомерной структурой данных, а csv представляет собой структуру данных 2D. Однако хороший способ превратить многомерную структуру в csv состоит в том, чтобы иметь несколько csvs, которые объединяются с первичными ключами.

В вашем примере первый вывод csv имеет столбцы «pk», «model», , "поля" в качестве столбцов. Значения для «pk» и «model» легко получить, но поскольку столбец «поля» содержит словарь, он должен быть его собственным csv, и поскольку «кодовое имя» появляется как первичный ключ, вы можете использовать его как вход для «полей» для завершения первого сеанса. Второй csv содержит словарь из столбца «поля» с кодовым именем в качестве первичного ключа, который можно использовать для связывания двух csvs вместе.

Вот решение для вашего json-файла, который преобразует вложенные словари до 2 csvs.

import csv
import json

def readAndWrite(inputFileName, primaryKey=""):
    input = open(inputFileName+".json")
    data = json.load(input)
    input.close()

    header = set()

    if primaryKey != "":
        outputFileName = inputFileName+"-"+primaryKey
        if inputFileName == "data":
            for i in data:
                for j in i["fields"].keys():
                    if j not in header:
                        header.add(j)
    else:
        outputFileName = inputFileName
        for i in data:
            for j in i.keys():
                if j not in header:
                    header.add(j)

    with open(outputFileName+".csv", 'wb') as output_file:
        fieldnames = list(header)
        writer = csv.DictWriter(output_file, fieldnames, delimiter=',', quotechar='"')
        writer.writeheader()
        for x in data:
            row_value = {}
            if primaryKey == "":
                for y in x.keys():
                    yValue = x.get(y)
                    if type(yValue) == int or type(yValue) == bool or type(yValue) == float or type(yValue) == list:
                        row_value[y] = str(yValue).encode('utf8')
                    elif type(yValue) != dict:
                        row_value[y] = yValue.encode('utf8')
                    else:
                        if inputFileName == "data":
                            row_value[y] = yValue["codename"].encode('utf8')
                            readAndWrite(inputFileName, primaryKey="codename")
                writer.writerow(row_value)
            elif primaryKey == "codename":
                for y in x["fields"].keys():
                    yValue = x["fields"].get(y)
                    if type(yValue) == int or type(yValue) == bool or type(yValue) == float or type(yValue) == list:
                        row_value[y] = str(yValue).encode('utf8')
                    elif type(yValue) != dict:
                        row_value[y] = yValue.encode('utf8')
                writer.writerow(row_value)

readAndWrite("data")
1
задан Sarthak Aggarwal 29 March 2019 в 11:39
поделиться

1 ответ

Просто привяжите результат к шаблону следующим образом:

export class AppComponent implements OnInit, OnDestroy {
  myTime
  myInterval
  title = 'My First Angular application';
  oneHourAgo: string = "";
  EightHoursAgo: string = "";
  constructor () {}

  // you may want to use ngOnInit to call curTime   
  ngOnInit() {
    this.curTime()
    this.myInterval = setInterval(() => {
      this.curTime()
    }, 1000)
  }

  // if using setInterval then be sure to clean up else it will keep
  // firing after the component is destroyed
  ngOnDestory() {
    clearInterval(this.myInterval)
  }

  curTime() {
     console.log('hello i am updating the displayed time')
     this.myTime = moment().format("YYYY-MM-DD HH:mm:ss");
  }
}

и в шаблоне HTML для компонента:

<div>{{ myTime }}</div>

Что бы вы ни делали, убедитесь, что curTime () работает называется. Я полагаю, вы называете это в HTML.

0
ответ дан danday74 29 March 2019 в 11:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: