@ravewave

Как организовать select для JSON?

Всем привет!
Есть данные в формате JSON в виде файла.
Пример: есть множество объектов транспортных средств (ТС), для каждого из которых есть свой производитель, цвет и т.д. Для каждого объекта ТС можно выбрать тип: мотоцикл или автомобиль. У каждого типа ТС есть свои свойства, которые гипотетически не меняются, например, максимальная скорость. Так вот на JS я бы написал что-то типо этого:
var type_1 = {
    max_speed: 300
  },
  type_2 = {
    max_speed: 260
  },
  transport_1 = {
    color: "red",
    type: type_2
  },
  transport_2 = {
    color: "blue",
    type: type_1
  }
}

В общем, приблизительно как-то так. Так вот потом я мог бы узнать максимальную скорость у объекта transport_2: transport_2.type.max_speed, а в файле json я же так сделать не смогу, ссылок-то не так на объекты, просто тупо текст. Сейчас я через php открываю файл json и вывожу через шаблонизатор верстку, мне как раз нужно сделать select для этих объектов ТС, чтобы я мог выбрать тип этого ТС, так вот я что-то не пойму, как мне организовать это все дело, чтобы объект ТС понимал, к какому типу он относится. У кого был опыт, поделитесь, пожалуйста. Спасибо.
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Не делать циклических ссылок
var data = {
	types: {
		type_1: {
			max_speed: 300
		},
		type_2: {
			max_speed: 260
		}
	},
	TC: {
		transport_1: {
			color: "red",
			type: "type_2"
		},
		transport_2: {
			color: "blue",
			type: "type_1"
		}
	}
}

var tc = data.TC.transport_1;
console.log("Car:", tc.color); //red
console.log("Speed:", data.types[tc.type].max_speed); //260
Тогда и в JSON проблем не будем
{
	"types": {
		"type_1": {
			"max_speed": 300
		},
		"type_2": {
			"max_speed": 260
		}
	},
	"TC": {
		"transport_1": {
			"color": "red",
			"type": "type_2"
		},
		"transport_2": {
			"color": "blue",
			"type": "type_1"
		}
	}
}
Равно как и в PHP при работе с JSON
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы