我有一个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);
答案 0 :(得分:1)
对于我使用“JSON对象”的原因,这对我没有多大意义。 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;
这假设您正在使用as3coreLib JSON类来解码json字符串。
答案 1 :(得分:0)
对象是动态的,不必在运行时创建对象。
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
这是你遇到麻烦的吗?如果没有,也许你可以给我们更多关于你的问题的信息。