解析JSON返回nil [英] Parsing JSON returns nil

查看:135
本文介绍了解析JSON返回nil的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用此代码在购物车中订购产品.我正在尝试获取所生成订单的订单ID.我不太确定发生了什么,因为结果"是AnyHashable值,ID是我需要的值.运行代码时,它始终显示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. I'm not too sure what is happening as the 'result' is the AnyHashable value and ID is the value I need. When the code is ran, it always prints 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";

推荐答案

您不能将密钥路径传递给密钥订阅,并且id是Int:

You cannot pass a key path to a key subscription and id is an Int:

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

这篇关于解析JSON返回nil的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆