Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AS3 JSON parsing

I have a bit of a dilemma. I have a JSON object that has a format I'm unfamiliar with (starts with an array [] instead of an object {}) and was wondering how I might parse it in AS3. The object looks like:

[
    {
        "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
            }
        ]
    }
]

I don't really know how I get to each food array, and each object within it. Any help would be greatly appreciated! Thanks!

like image 388
dtrainer45 Avatar asked Nov 11 '09 06:11

dtrainer45


3 Answers

from flash player 11, and sdk 4.6 there is native support for json. To use it you should change

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

to

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

while JSON is not from as3corelib but from sdk itself. Pretty much faster ;)

like image 51
PiotrkS Avatar answered Sep 28 '22 08:09

PiotrkS


You will need to use the JSON Object Class (below link) http://code.google.com/p/as3corelib/

and then something like this..

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"}
like image 36
medoix Avatar answered Sep 28 '22 08:09

medoix


Interesting datastructure... this should do it:

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);
  }
}
like image 43
Les Avatar answered Sep 28 '22 07:09

Les