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

Actionscript 3 as3将json中的字符串作为对象进行求值,actionscript-3,json,evaluation,Actionscript 3,Json,Evaluation,我有一个json对象,在编译时我不知道其中的一些值,但我知道所有对象在运行时都是有效的。因此,在下面的示例中,第一个跟踪将输出“50”,我希望第二个跟踪输出“100”,即someObject.someparam的值,该值在运行时定义。这可能吗?谢谢 var plan:Object = { "testParam": 50, "testParam2": "someObject.someParam" } var someObject:Object = {"someParam": 100}// this

我有一个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);

对于为什么要使用“JSON对象”,这对我来说没有多大意义。JSON是基于文本的表示法,稍后可以由您使用的特定编码语言来解释

因此,假设您的JSON字符串实际上是:

var jsonString:String = '{
    "testParam": 50,
    "testParam2": "someObject.someParam"
}';
您可以在编译时完全省略“testParam”属性,然后在运行时解析字符串并设置该属性

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

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

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

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

这是假设您正在使用JSON类来解码JSON字符串。

对象是动态的,您不必在运行时创建它

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

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

嗯,我们似乎有点脱节。我理解你关于绳子的第一点。但这里的要点是,我必须在编译时设置testParam2。例如,在编译时,我可能希望将param2设置为函数名。然后,当我读取json文件时,我会将其视为一个函数,如:jsonString.testParam2(arguments);但显然,我需要在两者之间采取一些措施。在这里进行更改和重申,这可能会解决我的问题: