Может быть, это уже обсуждалось где-то, я сам не мог найти точный ответ, как подойти к моей проблеме:Анализировать JSON для создания объекта в Javascript
У меня есть mutliniear «историю», которая выполняет код в каждом сегменте. Я написал конечный автомат, который инициирует новый сегмент, когда другой сегмент вызывает его. Каждый сегмент имеет функцию onEnter-, onCheck и onLeave. Как уже упоминалось имя, onEnter выполняется, когда сегмент вызывается, onCheck проверяет некоторый ввод до тех пор, пока некоторые условия не будут заполнены (если да, они приведут к другому сегменту), а onLeave будет выполняться непосредственно перед вызовом следующего сегмента.
В настоящее время я просто написал JavaScript Object вроде как это:
var flow = {
seg1: {
onEnter: function() {
this.say('Seg1');
},
onCheck: function(data) {
if (data.condition) {
machine.callNextSeg('seg2');
} else if (data.condition2) {
machine.callNextSeg('seg3');
}
},
onLeave: function() {
}
},
seg2: {
onEnter: function() {
this.say('Seg2');
},
onGestureCheck: function(data) {
},
onLeave: function() {
}
},
seg3: {
onEnter: function() {
this.say('Seg3');
},
onGestureCheck: function(data) {
},
onLeave: function() {
}
}
};
Пример немного упрощен для понимания, но код внутри будет немного сложнее.
Я хотел бы иметь файл JSON, который загружается, анализируется и создает такой объект. Файл JSON должен использовать более простой и абстрактный абстрактный синтаксис для записи. Особенно, чтобы сделать это быстрее.
Я представляю себе что-то вроде этого:
{
"seg1": {
"onEnter": {
"say": 'Seg1'
},
"onCheck": {
"condition1": "seg2",
"condition2": "seg3"
},
"onLeave": {
}
},
"seg2": {
"onEnter": {
"say": 'Seg2'
},
"onCheck": {
},
"onLeave": {
}
}
}
условия являются булевы и если верно, описанный сегмент должен быть вызван.
Было бы легко разобрать json, создать объект и создать внутри него функции для каждого onEnter, onCheck и onLeave? А также напишите необходимые фразы if?
Спасибо за подсказки в правильном направлении.
веселит
J.
Хорошо. Спасибо за ваш комментарий. В моем случае мой файл будет javascript, так что это не проблема. Я попытаюсь что-то создать. Если я не могу заставить его работать, я останусь с объектным литералом. Хотя мне очень хотелось бы иметь упрощенную запись потока ... – Merc