as3将json中的字符串作为对象进行求值

时间:2011-06-23 20:05:41

标签: actionscript-3 json evaluation

我有一个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 个答案:

答案 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

这是你遇到麻烦的吗?如果没有,也许你可以给我们更多关于你的问题的信息。