Проблема при разборе Json Response в приложении для iOS, когда в словаре отображается «=» вместо «:» - PullRequest
0 голосов
/ 21 сентября 2018

Я работаю над приложением для iOS и использую в нем swift.Я звоню API-интерфейсу Rest, а ответ - JSON.

Вот мой код:

{

        let request = NSMutableURLRequest(url: NSURL(string: path)! as URL)

        // Set the method to POST
        request.httpMethod = "POST"

        do {
            // Set the POST body for the request

            let jsonBody = try JSONSerialization.data(withJSONObject: body, options: .prettyPrinted)
            request.httpBody = jsonBody

            request.addValue("application/json", forHTTPHeaderField: "Content-Type")
            request.addValue("application/json", forHTTPHeaderField: "Accept")

            //            request.addValue("Cookie", forHTTPHeaderField: session_Id)

            let session = URLSession.shared

            let task = session.dataTask(with: request as URLRequest, completionHandler: {data, response, error -> Void in

                if let jsonData = data {

                    print("\(data?.debugDescription)")
                    do {

                        print("JSON Response String: \(String.init(data: data!, encoding: .utf8))")

                        let dict:[String:Any] = (try JSONSerialization.jsonObject(with: jsonData, options: []) as? [String:Any])!


                        print("JSON Response Dictionary: \(dict)")

                        onCompletion(dict, nil)

                    } catch {
                        // report ERROR

                        print("caught: \(error)")

                        onCompletion(nil, error as! NSError)

                    }



                } else {


                    print(error)
                    onCompletion(nil, error as! NSError)
                }
            })
            task.resume()
        } catch {
            // Create your personal error


            onCompletion(nil, nil)
        }
    }

И это ответ API:

======== - Fetch CC list api request - =============
["userID": "898465844"]
======== - Fetch CC list api request - =============

JSON Response String: "{\"status\":\"success\",\"card_list\":[{\"cardType\":\"Visa\",\"cardholderName\":null,\"expirationMonth\":\"01\",\"expirationYear\":\"2020\",\"cardImage\":\"https://assets.braintreegateway.com/payment_method_logo/visa.png?environment=sandbox\",\"cardNumber\":\"411111******1111\",\"token\":\"348nws\"}]}"


JSON Response Dictionary: ["status": success, "card_list": <__NSSingleObjectArrayI 0x1c060f350>(
{
    cardImage = "https://assets.braintreegateway.com/payment_method_logo/visa.png?environment=sandbox";
    cardNumber = "411111******1111";
    cardType = Visa;
    cardholderName = "<null>";
    expirationMonth = 01;
    expirationYear = 2020;
    token = 348nws;
}
)
]

После анализаЯ получаю «=» вместо «:» в массиве словаря «card_list».

Так что я не могу понять, почему я получаю «=» вместо «:».

1 Ответ

0 голосов
/ 21 сентября 2018

Формат вашего ответа не похож на JSON.Его список свойств или (XML) попробуйте использовать - PropertyListSerialization.propertyList(from:...) или некоторые парсеры XML

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...