我试图比较两个特定的信息位。一个是as3字符串的形式,另一个是Json数组的形式。
Json数组显示来自商店网站的客户数据。我想要做的是将字符串(即客户名称)与数据进行比较,当找到匹配的名称时,只跟踪客户的具体信息。
我很有趣的id必须使用一个循环进行比较,但我很难理解如何将Json转换为特定的循环,然后可以单独与字符串进行比较。任何帮助都是完美的。
由于
答案 0 :(得分:0)
请注意,JSON只是标准的AS3对象。这里没有魔法;像往常一样循环遍历它并像往常一样进行比较。
var jsonObj:Object = {
"customers": [
{
"id": "04aa1ab3-521b-11e3-a29a-bc305bf5da20",
"name": "fake name",
"customer_code": "00000002",
"customer_group_id": "6012cd22-5166-11e3-a29a-bc305bf5da20",
"customer_group_name": "All Customers",
"first_name": "test",
"last_name": "test",
"company_name": "",
"email": "testest@yahoo.com"
}
]
}
var myString:String = "fake name";
for (var k:String in jsonObj.customers[0]) {
var v:String = jsonObj.customers[0][k];
if (v == myString) {
trace(myString + "'s email is " + jsonObj.customers[0].email)
}
}
答案 1 :(得分:0)
使用Dictionary对象以其唯一名称(或ID)作为参考来存储客户对象; 您当然不希望为有问题的客户编写不必要的循环搜索。
<强>解决方案强>
var jsonObj:Object = {
"customers": [
{
"id": "04aa1ab3-521b-11e3-a29a-bc305bf5da20",
"name": "fake name",
"customer_code": "00000002",
"customer_group_id": "6012cd22-5166-11e3-a29a-bc305bf5da20",
"customer_group_name": "All Customers",
"first_name": "test",
"last_name": "test",
"company_name": "",
"email": "testest@yahoo.com"
}
]
}
//Dictionary Object to store customers
var customers:Dictionary=new Dictionary();
//customer object in the json
var customer:Object;
//loop json object to retrieve customers and
//store them in Dictionary using either unique name or id
for each(customer in jsonObj)
customers[customer.name]=customer;
//retrieve customer in question
function getCustomer(id:String):Object
{
return customers[id] as Object;
}