AS3 JSON解析

时间:2009-11-11 06:49:15

标签: flash actionscript-3 json

我有点困境。我有一个JSON对象,它有一个我不熟悉的格式(以数组[]而不是对象{}开头)并且想知道我如何在AS3中解析它。该对象看起来像:

[
    {
        "food": [
            {
                "name": "pasta",
                "price": 14.50,
                "quantity": 20
            },
            {
                "name": "soup",
                "price": 6.50,
                "quantity": 4
            }
        ]
    },
    {
        "food": [
            {
                "name": "salad",
                "price": 2.50,
                "quantity": 3
            },
            {
                "name": "pizza",
                "price": 4.50,
                "quantity": 2
            }
        ]
    }
]

我真的不知道我是如何到达每个食物阵列以及其中的每个物体。任何帮助将不胜感激!谢谢!

4 个答案:

答案 0 :(得分:24)

来自flash player 11,而sdk 4.6则有json的原生支持。要使用它,您应该更改

var foods:Array = JSON.decode(jsonstring);

var foods:Array = JSON.parse(jsonstring);

虽然JSON不是来自as3corelib,而是来自sdk本身。快得多;)

答案 1 :(得分:12)

您将需要使用JSON对象类(在链接下方) http://code.google.com/p/as3corelib/

然后是这样的......

var data:String = "{\"name\":\"pizza\",\"price\":\"4.50\",\"quantity\":\"2\"}";
var food:JSONObject = new JSONObject(data);
trace(food.name); // Pizza
trace(food.price); // 4.50
trace(food.quantity); // 2
food.number++;
var newData:String = String(food);
trace(newData); // {"name":"pizza","price":"4.50","quantity":"2"}

答案 2 :(得分:7)

有趣的数据结构......应该这样做:

import com.adobe.serialization.json.JSON;
/* ... other code ... */
var foods:Array = JSON.decode(jsonstring);
for(var i:int = 0; i < foods.length; i++) {
  for(var j:int = 0; j < foods[i].length; j++) {
    trace(foods[i][j].name);
  }
}

答案 3 :(得分:2)

我正在寻找图书馆的替代品,并找到了here技术。我假设这将在op的上下文中工作(当然,多年前已经回答),因为它不需要返回类型的Object。当我发现这篇文章时,这很适合我试图做的事情,我发现这个解决方案非常适合浏览器中的flash。

function json_decode( data:String ):* {
  try {
    return ExternalInterface.call("function(){return " + data + "}");
  } catch (e:Error) {
    return null;
  }
}