AS3 JSON解析

dtr*_*r45 7 flash json actionscript-3

我有点进退两难.我有一个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
            }
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)

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

小智 24

来自flash player 11和sdk 4.6有json的原生支持.要使用它你应该改变

var foods:Array = JSON.decode(jsonstring);
Run Code Online (Sandbox Code Playgroud)

var foods:Array = JSON.parse(jsonstring);
Run Code Online (Sandbox Code Playgroud)

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

  • 唯一需要改变的是`var foods:Array`应改为`var foods:Object`.当我尝试使用Array时,它表示该类型对于JSON.parse返回的内容无效. (3认同)

med*_*oix 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"}
Run Code Online (Sandbox Code Playgroud)

  • +1 AS3corelib很好.@ dtrainer45:如果使用adobe flexbuilder,请在反序列化json字符串后添加断点.然后,您可以探索创建的对象图的结构.如果它是一个数组,它应该类似于var x:JSONObject = new JSONObject(data); 迹(X [0].食物[0].名称); 虽然没经过测试 (2认同)

Les*_*Les 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);
  }
}
Run Code Online (Sandbox Code Playgroud)