我已经四处搜寻了几个小时,但我仍然不知道发生了什么。我是 PHP 新手,但对简单的 Flash 内容相当熟悉。
我使用 URLLoaders 等将一个 JSON 对象从 PHP 传递到 Flash AS3。这是我的 PHP 创建的测试 JSON 数组:
$objJSON = array('sample' => null);
$objJSON['sample'] = "TESTING";
$objJSON['sample2'] = "TESTING2";
$objJSON = json_encode($objJSON);
我把它还给闪光灯
echo "arrayData=$jsonArray";
当我将其解析为 Flash 中的 SINGLE 对象时,使用
var tempJSON = JSON.decode(event.target.data.arrayData);
我得到“TESTING”作为我的输出(textBox.text = tempJSON.sample; 通过 WAMP 使用 localhost),这是正确的。一切看起来都很好,有通信,JSON 库使用得当,对象在那里并且可以访问......
但!当我将它视为一个数组时(因为它就是这样),将上面的代码直接更改为:
var tempJSON:Array = JSON.decode(event.target.data.arrayData, true);
我抛出一个编译器错误:
TypeError:错误 #1009:无法访问空对象引用的属性或方法。在 com.adobe.serialization.json::JSONTokenizer/nextChar()[....\json\JSONTokenizer.as:545]
在 localhost 中运行 swf 让我无法返回以前获取字符串的位置。当我将数据视为数组时,我是否犯了一些新手错误,即数据突然变为空?
我已经通过 PHP 中的输出检查了我的 JSON 的有效性并检查了出来。我确保在调用的 PHP 类中没有额外的回声。我只是难过。
修复!
在评论的指导下,我基本上没有将我的 JSON 形成一个数组,只是具有多个属性的对象。正确的做法是:
$objArray = array(
array(
"sample1" => "Testing!",
"sample2" => "Testing2!",
),
array (
"sample1" => "Testing!",
"sample2" => "Testing2!",
)
);
$objArray = json_encode($objArray);