简体   繁体   English

解析JSON返回nil

[英]Parsing JSON returns nil

I'm using this code to order a product place in the cart. 我正在使用此代码在购物车中订购产品。 I'm trying to get the order ID of the order generated. 我正在尝试获取所生成订单的订单ID。 I'm not too sure what is happening as the 'result' is the AnyHashable value and ID is the value I need. 我不太确定发生了什么,因为“结果”是AnyHashable值,ID是我需要的值。 When the code is ran, it always prints nil? 运行代码后,它始终显示nil吗?

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

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

    print(orderID)

I'm trying to parse this data: 我正在尝试解析此数据:

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 = "jon.doe@gmail.com";
                "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 = "jon.doe@gmail.com";
        "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 = "jon.doe@gmail.com";
                "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";

You cannot pass a key path to a key subscription and id is an Int: 您不能将密钥路径传递给密钥订阅,并且id是Int:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM