извлекать данные JSON в быстрый удобный вид - PullRequest
0 голосов
/ 14 февраля 2019
Below is my json file 

и URL-адрес http://localhost/country.php Я хочу, чтобы эти данные были в удобном виде swift {name: ["India", "USA", "China"]}

 let url = NSURL(string: "http://localhost/country.php")
let userdata = NSData(contentsOf: url! as URL)
do {
    let values = try JSONSerialization.jsonObject(with: userdata as! Data, options: .allowFragments) as! NSDictionary
    print(values)
    print("Parse success")
} catch let error as NSError
{
    print(error)
    return
}

это код, пожалуйста, помогите

1 Ответ

0 голосов
/ 14 февраля 2019

Итак.Прежде всего: ваш JSON не является действительным JSON и ваш URL (конечно) не работает.Я предполагаю, что ваш JSON выглядит так:

{
"name": ["India",
         "USA",
         "China"
        ]
}

Если это так, вы можете изменить свой код таким образом, и он будет работать, как и ожидалось:

let jsonString = """
{
"name": ["India",
         "USA",
         "China"
        ]
}
"""

let userData = jsonString.data(using: .utf8)!

do {
    let values = try JSONSerialization.jsonObject(with: userData) as! [String: Any]
    print(values)
    print("Parse success")
} catch let error as NSError
{
    print(error)
}

Как один уже упомянутый комментарий: Попробуйтеизбегать NS типов в Swift, если это действительно не нужно.

Надеюсь, это поможет.

И, кроме того: как правило, загрузка ответа от синхронизации с сервером - это плохая практика.Вы должны использовать URLSession и делать это асинхронно.Но это другое дело ...

Таким образом, полный пример для вашего варианта использования будет выглядеть так:

let url = URL(string: "http://localhost/country.php")!
let userData = try! Data(contentsOf: url)

do {
    let values = try JSONSerialization.jsonObject(with: userData) as! [String: Any]
    print(values)
    print("Parse success")
} catch let error as NSError
{
    print(error)
}

Я принудительно разверну в приведенном выше примере.Я не рекомендую это.Сэкономьте, распакуйте ваши опционы, это лучший способ.

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