簡體   English   中英

解析JSON返回nil

[英]Parsing JSON returns nil

我正在使用此代碼在購物車中訂購產品。 我正在嘗試獲取所生成訂單的訂單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是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