as3 оценивает строку из json как объект - PullRequest
2 голосов
/ 24 июня 2011

У меня есть объект json, где я не знаю некоторых значений во время компиляции, но я знаю, что все объекты будут действительны во время выполнения.Таким образом, в приведенном ниже примере первая трассировка выведет «50», а я хочу, чтобы вторая трассировка вывела «100», значение someObject.someparam, которое определяется во время выполнения.Это возможно?Спасибо

var plan:Object = { "testParam": 50, "testParam2": "someObject.someParam" }
var someObject:Object = {"someParam": 100}// this actually doesn't get defined until runtime  

trace ("testParam " + plan.testParam);
trace ("testParam2 " + someSortOfInterpreter(plan.testParam2);

Ответы [ 2 ]

1 голос
/ 24 июня 2011

Это не имеет особого смысла для меня, почему вы используете "JSON Object".JSON - это текстовая нотация, которая впоследствии может быть интерпретирована конкретным языком кодирования, который вы используете.

Итак, предполагая, что ваша строка JSON на самом деле:

var jsonString:String = '{
    "testParam": 50,
    "testParam2": "someObject.someParam"
}';

Вы можете просто полностью пропустить свойство "testParam" во время компиляции, затем проанализировать строку и установить это свойство во время выполнения.

Начните с:

var jsonString:String = '{
    "testParam": 50
}';

затем:

var plan:Object = JSON.decode (jsonString);
plan.testParam2 = someObject.testParam;

Предполагается, что вы используете JSON-класс as3coreLib для декодированиястрока json.

0 голосов
/ 24 июня 2011

Объекты являются динамическими, вам не нужно существовать, чтобы создать их во время выполнения.

var someObject:Object = { }; // Empty object with nothing defined in it

trace(someObject.someParam); // Traces out "undefined"

Вы также можете проверить, установлен ли он

if (someObject.someParam != undefined)

Вы можете установить его, когда захотите

someObject.someParam = 100;

и теперь, после того, как он был установлен, он будет корректно трассироваться

trace(someObject.someParam); // Traces out 100

С этим у вас проблемы? Если нет, возможно, вы могли бы дать нам больше информации о вашей проблеме.

...