php - AS3、PHP 和 JSON - 解码一个对象没问题,数组返回 null

标签 php json actionscript-3 flash

我已经搜索了几个小时了,但我仍然不知道发生了什么。我是 PHP 新手,但对简单的 Flash 内容相当熟悉。

我使用 URLLoaders 等将 JSON 对象从 PHP 传递到 Flash AS3。这是我的 PHP 创建的测试 JSON 数组:

$objJSON = array('sample' => null);
    $objJSON['sample'] = "TESTING";
    $objJSON['sample2'] = "TESTING2";
    $objJSON = json_encode($objJSON);

我将其返回到 flash

echo "arrayData=$jsonArray";

当我将其解析为 Flash 中的单个对象时,使用

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: Error #1009: Cannot access a property or method of a null object reference. at com.adobe.serialization.json::JSONTokenizer/nextChar()[....\json\JSONTokenizer.as:545]

在本地主机中运行 swf 无法返回我用来获取字符串的位置。我是否犯了一些新手错误,当我将数据视为数组时,数据突然变为空?

我已经通过 PHP 的输出检查了 JSON 的有效性,并且结果正确。我已经确保在被调用的 PHP 类中没有额外的 echo 。我只是被难住了。

已修复!

在评论的指导下,我基本上没有将 JSON 形成一个数组,而只是具有多个属性的对象。正确的做法是:

$objArray = array(
   array(
   "sample1" => "Testing!",
   "sample2" => "Testing2!",
),
   array (
   "sample1" => "Testing!",
   "sample2" => "Testing2!",
  )
);


$objArray = json_encode($objArray);

最佳答案

我相信这是因为您的 JSON 正在解码为对象而不是数组。如果您使用非整数值作为数组键(即“sample”、“sample2”),就会发生这种情况。

我对 AS3 不太熟悉,但您可能需要将其转换为类似对象的实例而不是数组。

$objJSON = array('sample' => "TESTING", 'sample2' => "TESTING2");
echo json_encode($objJSON);

// Will output
{ "sample": "TESTING", "sample2": "TESTING2" }

不是使用 JSON 的数组表示法。这是对象表示法。

希望这会有所帮助!

关于php - AS3、PHP 和 JSON - 解码一个对象没问题,数组返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13692961/

相关文章:

php - 如何将数组值从字符串更改为整数

PHP 数组作为存储过程的输入

php - 为什么将csv上传到mysql时,数据会改变顺序?

python - 在 docker 容器中运行 python 脚本时没有 json 模块

ios - 在 SWIFT 4 中连接成功后找不到 JSON 解析数据

actionscript-3 - Windows 上有 Actionscript 3 的编译器吗?

actionscript-3 - Flex Printjob崩溃

php - 在数据库中记录成员生日的正确方法是什么?

javascript - 将两个列表转换为 json

actionscript-3 - 在 TabNavigator 中隐藏选项卡的最佳方法是什么?