2017-05-05 117 views
-2

我使用此代码在购物车中订购产品。我正在尝试获取生成订单的订单ID。我不太确定发生了什么,因为“结果”是AnyHashable值,ID是我需要的值。代码运行时,它总是打印零?解析JSON返回无

Moltin.sharedInstance().cart.order(withParameters: orderParameters, success: { (responceDictionary) -> Void in 
    print(responceDictionary) 

    let orderID1 = responceDictionary!["result.id"] as? String 
    let orderID = orderID1 

    print(orderID) 

我试图分析这些数据:

Optional([AnyHashable("status"): 1, AnyHashable("result"): { 
"bill_to" =  { 
    data =   { 
     "address_1" = "123 Sunny Street"; 
     "address_2" = Sunnycreek; 
     city = Sunnyvale; 
     company = ""; 
     country =    { 
      data =     { 
       code = US; 
       name = "United States"; 
      }; 
      value = "United States"; 
     }; 
     county = California; 
     "created_at" = "2017-04-22 19:34:48"; 
     customer =    { 
      data =     { 
       "created_at" = "2017-04-22 19:34:48"; 
       email = "[email protected]"; 
       "first_name" = Jon; 
       group = "<null>"; 
       id = 1498789797559271902; 
       "last_name" = Doe; 
       order = "<null>"; 
       password = "<null>"; 
       "updated_at" = "2017-04-22 19:34:48"; 
      }; 
      value = Jon; 
     }; 
     "first_name" = Jon; 
     id = 1498789800293958111; 
     instructions = ""; 
     "last_name" = Doe; 
     order = "<null>"; 
     phone = 6507123124; 
     postcode = CA94040; 
     "save_as" = ""; 
     "updated_at" = "2017-04-22 19:34:48"; 
    }; 
    value = ""; 
}; 
"created_at" = "2017-05-05 11:11:38"; 
currency =  { 
    data =   { 
     code = GBP; 
     "created_at" = "<null>"; 
     "decimal_point" = "."; 
     default = 1; 
     enabled = 1; 
     "exchange_rate" = 0; 
     format = "\U00a3{price}"; 
     id = 1490649105943233368; 
     modifier = "+0"; 
     rounding = "<null>"; 
     "thousand_point" = ","; 
     title = "British Pound"; 
     "updated_at" = "<null>"; 
    }; 
    value = "British Pound"; 
}; 
customer =  { 
    data =   { 
     "created_at" = "2017-04-22 19:34:48"; 
     email = "[email protected]"; 
     "first_name" = Jon; 
     group = "<null>"; 
     id = 1498789797559271902; 
     "last_name" = Doe; 
     order = "<null>"; 
     password = "<null>"; 
     "updated_at" = "2017-04-22 19:34:48"; 
    }; 
    value = Jon; 
}; 
gateway =  { 
    data =   { 
     description = "<null>"; 
     enabled = 1; 
     name = Dummy; 
     slug = dummy; 
    }; 
    value = Dummy; 
}; 
id = 1507958626625520537; 
order = "<null>"; 
"ship_to" =  { 
    data =   { 
     "address_1" = "123 Sunny Street"; 
     "address_2" = Sunnycreek; 
     city = Sunnyvale; 
     company = ""; 
     country =    { 
      data =     { 
       code = US; 
       name = "United States"; 
      }; 
      value = "United States"; 
     }; 
     county = California; 
     "created_at" = "2017-04-22 19:34:48"; 
     customer =    { 
      data =     { 
       "created_at" = "2017-04-22 19:34:48"; 
       email = "[email protected]"; 
       "first_name" = Jon; 
       group = "<null>"; 
       id = 1498789797559271902; 
       "last_name" = Doe; 
       order = "<null>"; 
       password = "<null>"; 
       "updated_at" = "2017-04-22 19:34:48"; 
      }; 
      value = Jon; 
     }; 
     "first_name" = Jon; 
     id = 1498789800293958111; 
     instructions = ""; 
     "last_name" = Doe; 
     order = "<null>"; 
     phone = 6507123124; 
     postcode = CA94040; 
     "save_as" = ""; 
     "updated_at" = "2017-04-22 19:34:48"; 
    }; 
    value = ""; 
}; 
shipping =  { 
    data =   { 
     company = "Royal Mail"; 
     "created_at" = "2017-04-20 16:14:00"; 
     description = ""; 
     id = 1497239180449678231; 
     order = "<null>"; 
     price =    { 
      data =     { 
       formatted =      { 
        tax = "\U00a30.80"; 
        "with_tax" = "\U00a34.79"; 
        "without_tax" = "\U00a33.99"; 
       }; 
       raw =      { 
        tax = "0.798"; 
        "with_tax" = "4.788"; 
        "without_tax" = "3.99"; 
       }; 
       rounded =      { 
        tax = "0.8"; 
        "with_tax" = "4.79"; 
        "without_tax" = "3.99"; 
       }; 
      }; 
      value = "\U00a34.79"; 
     }; 
     "price_max" = 0; 
     "price_min" = 0; 
     slug = "free-shipping"; 
     status =    { 
      data =     { 
       key = 1; 
       value = Live; 
      }; 
      value = Live; 
     }; 
     "tax_band" =    { 
      data =     { 
       "created_at" = "<null>"; 
       description = "<null>"; 
       id = 1490649106035507967; 
       rate = 20; 
       title = Default; 
       "updated_at" = "<null>"; 
      }; 
      value = Default; 
     }; 
     title = "Standard Shipping"; 
     "updated_at" = "2017-04-20 16:14:21"; 
     "weight_max" = 0; 
     "weight_min" = 0; 
    }; 
    value = "Standard Shipping"; 
}; 
status =  { 
    data =   { 
     key = unpaid; 
     value = Unpaid; 
    }; 
    value = Unpaid; 
}; 
totals =  { 
    "shipping_price" =   { 
     formatted = "\U00a34.79"; 
     raw = "4.788"; 
     rounded = "4.79"; 
    }; 
    subtotal =   { 
     formatted = "\U00a32,900.00"; 
     raw = 2900; 
     rounded = 2900; 
    }; 
    tax =   { 
     formatted = "\U00a3580.00"; 
     raw = 580; 
     rounded = 580; 
    }; 
    total =   { 
     formatted = "\U00a33,484.79"; 
     raw = "3484.79"; 
     rounded = "3484.79"; 
    }; 
}; 
"updated_at" = "2017-05-05 11:11:38"; 
+0

key的值' id'似乎是一个'Int' – vadian

+0

@vadian你能指点我吗,以及如何纠正这种情况? – Owen26

+0

尝试让letID1 = responceDictionary![“result.id”]为? Int' – SeanLintern88

回答

0

你不可错过的关键路径的关键订阅和id是一个int:

if let resultDictionary = responceDictionary["result"] as? [String:Any], 
    let orderID = resultDictionary["id"] as? Int { 
     let orderIDString = "\(orderID)" 
     print(orderIDString) 
} 
+0

我需要在语句中使用用户orderIDString:'if let oid = orderIDString {}'。我得到这个错误:条件绑定的初始化器必须有可选类型,而不是'字符串' – Owen26

+0

'orderIDString'是一个非可选字符串。 – vadian

+0

Xcode不喜欢它分配给另一个变量的方式吗?有没有另一种方法来将其加入字符串? – Owen26