json - 解析JSON返回nil

原文 标签 json swift

我正在使用此代码在购物车中订购产品。我正在尝试获取所生成订单的订单ID。我不太确定发生了什么,因为“结果”是AnyHashable值,ID是我需要的值。运行代码后,它始终显示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)


我正在尝试解析此数据:

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是一个整数:

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

关于json - 解析JSON返回nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43806609/

相关文章:

c# - MVC Controller 返回内容 vs 返回 Json Ajax

javascript - $ .getJSON和$ .ajax无法返回JSON对象

swift - 使用 Vapor 3 保持 Socket 活跃

ios - 完全重置 CoreData

javascript - 用双引号中断解析字符串

java - 将JSON字符串转换为Java中的不同Java对象

jquery - ajax提交表单后刷新输入

ios - 如何在iOS 8 Swift中从照片库中提取多个图像

ios - 使用缓动曲线动画高度约束

ios - 如何根据条件使用户无法访问主页中的标签栏