【问题标题】:Parsing JSON in ActionScript (Adobe Flex). JSON.decode(string) returns null在 ActionScript (Adobe Flex) 中解析 JSON。 JSON.decode(string) 返回 null
【发布时间】:2023-04-10 14:11:01
【问题描述】:

我正在尝试在我的 Flex 项目中解析 JSON 文件。我包含了 as3corelib.swc 并导入了 com.adobe.serialization.json.JSON,但 JSON.decode() 函数仍然返回 null。可能是什么问题?

[Embed(source="assets/test.json",mimeType="application/octet-stream")]
private var json_file:Class;

public function load():void
{
    var bytes:ByteArray = new json_file();
    var json:String = bytes.readUTFBytes(bytes.length);
    trace(json); // String is OK!
    var arr:Array = (JSON.decode(json) as Array);
    trace(arr); // Array is null!
}

我也试过了:

    var str:String = (JSON.decode(json) as String);
    trace(arr); // null!

和:

    var arr:Object = JSON.decode(json); // [object Object]
    trace(arr.toString()); // empty string

感谢您的宝贵时间。

【问题讨论】:

  • 可能是错误的 JSON,或者您没有正确使用它。 JSON 使用键值对并总是解码为具有属性的对象。您应该以 Object.someKey 的形式访问解码的对象以获取数据。
  • JSON 很好。我用验证器检查了它。
  • 你是对的 J_A_X。我可以通过以下方式访问元素:trace(arr.GlossEntry[0].Acronym.toString());

标签: flash apache-flex actionscript-3 json actionscript


【解决方案1】:

在 flex 4.5 中,它变成了解析而不是解码

var obj:Object=JSON.parse(json);

【讨论】:

    【解决方案2】:

    试试这个也行

    var arr:Array = (JSON.decode(json) as Array);
    for (var keyname:String in arr)
    {
    trace ( keyname + ": " + arr[ keyname ] );          
    }   
    

    【讨论】:

      【解决方案3】:

      感谢 J_A_X 解决了问题(请参阅问题的 cmets)。可以通过键访问元素。示例:

      var obj:Object = JSON.decode(json);
      trace(obj.GlossEntry[0].Acronym.toString());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-06
        • 1970-01-01
        相关资源
        最近更新 更多