Выходные данные JSON.parse () изменяются, если они назначены переменной - PullRequest
1 голос
/ 14 июня 2019

Я занимаюсь разработкой сайта, где можно купить билеты на мероприятия.После выбора билета он находится в корзине.У меня есть sessionService.ts, который в основном является Map<string, any>, который читает / пишет из / в локальное хранилище.Сохранение карты в виде строки JSON работает отлично, но когда я загружаю данные из хранилища и пытаюсь проанализировать строку JSON в Map, данные больше не согласуются.

console.log(JSON.parse(data)) показывает правильные значения, но let x = JSON.parse(data); console.log(x); показывает измененные данные.

Я попытался воссоздать проблему на Stackblitz, но мне не удалось это сделать.


export class Ticket {
  public id: number;
  public created: Date;

  constructor(
    public reservation: boolean,
    public price: number,
    public section: number,
    public row: number,
    public seat: number,
    public event: number | Event) {
  }
}

private testParsing(){
    const custom = '[["Tickets",[{"reservation":true,"price":10,"section":null,"row":10,"seat":10,"event":5,"id":1,"created":"2019-06-14T14:16:17.144Z"}]]]';
    console.log('String to parse: ', custom);
    console.log('String parsed directly to console: ', JSON.parse(custom));
}

console.log('String to parse: ', custom); будет отображать правильные значения.

console.log('String parsed directly to console: ', JSON.parse(custom)); здесь вывод: id работы = 0, строка = ноль, место = ноль.

Журналы из кода: https://imgur.com/a/BumYqkI

Что вызывает эту проблему и как я могу ее решить?

1 Ответ

0 голосов
/ 30 июня 2019

Проблема в том, что это вложенная структура, попробуйте использовать JSON.parse(JSON.stringify(custom)), чтобы получить тот же результат.Я смог воспроизвести вашу проблему и решить с помощью этого метода в моей консоли.

...