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!
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 ;)
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"}
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);
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With