我如何将as3字符串与json数组进行比较?

时间:2014-01-06 14:39:44

标签: arrays json actionscript-3 flash

我试图比较两个特定的信息位。一个是as3字符串的形式,另一个是Json数组的形式。

Json数组显示来自商店网站的客户数据。我想要做的是将字符串(即客户名称)与数据进行比较,当找到匹配的名称时,只跟踪客户的具体信息。

我很有趣的id必须使用一个循环进行比较,但我很难理解如何将Json转换为特定的循环,然后可以单独与字符串进行比较。任何帮助都是完美的。

由于

2 个答案:

答案 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; 
  }