Задать вопрос

Как превратить объекты со ссылками в JSON?

Добрый день, Как превратить объекты со ссылками в JSON ?
Но без использования сторонней библиотеки ?
Превратите объект team из примера ниже в JSON:

var leader = {
  name: "Василий Иванович"
};

var soldier = {
  name: "Петька"
};

// эти объекты ссылаются друг на друга!
leader.soldier = soldier;
soldier.leader = leader;

var team = [leader, soldier];
  • Вопрос задан
  • 643 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Дело в том, что в JSON не может быть циклических ссылок по определению. Там даже нет переменных.

Лучше всего вам перейти на немного другой формат данных. А именно, хранить не ссылки на объекты, а их ключи в виде строк. Такие строки-ссылки спокойно сериализуются.
leader.soldier = "soldier";
soldier.leader = "leader";

Автоматически лучше не конвертировать, а именно взять такой формат за основу. Но если очень хочется, то как-то так:
for (let key in obj) {
  if (window[key]) obj[key] = key; //любой ваш критерий
}

В будущем для проверки, правда, понадобится чуть усложнённый код:
var test_leader = soldier.leader && window[soldier.leader];
//Конечно, вместо window у вас будет свой объект-обертка

Чтобы избавится от этого вам нужно будет всего лишь "чинить" объект после JSON.parse
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@kova1ev
Не понимаю, зачем задают такие вопросы.

Задача с learn.javascript

Там же можно посмотреть решение, если сам не можешь додуматься. Но автор почему-то хочет задать вопрос на тостере. Автор, зачем?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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