Почему формат странный, когда JSON анализируется в Swift3?IOS

Программируем под IOS
Ответить
Anonymous
 Почему формат странный, когда JSON анализируется в Swift3?

Сообщение Anonymous »

У меня возникли проблемы с анализом данных JSON с помощью API Оксфордского словаря. Я могу получить данные JSON, и на этом этапе проблем нет. Но формат немного странный. На примере данных JSON от OXford Document это выглядит так:

Код: Выделить всё

"results": [
{
"id": "string",
"language": "string",
"lexicalEntries": [
{
"entries": [
{..........
В отличие от примера выше, массив в моем JSON окружен не [], а ()
Почему это происходит??

Обновлено

Для его создания я использовал Alamofire. Код:

Код: Выделить всё

   func getJSONData() {

let appId = ""
let appKey = ""
let language = "en"
let word = "play"
let word_id = word.lowercased()
let url = URL(string: "https://od-api.oxforddictionaries.com/api/v1/entries/\(language)/\(word_id)")!
var request = URLRequest(url: url)
request.addValue("application/json", forHTTPHeaderField: "Accept")
request.addValue(appId, forHTTPHeaderField: "app_id")
request.addValue(appKey, forHTTPHeaderField: "app_key")

Alamofire.request(request).responseJSON { response in
print("Request \(response.request)")  // original URL request
print("Response \(response.response)") // HTTP URL response
print("Data \(response.data)")     // server data
print("Result \(response.result)")   // result of response serialization

if let JSON = response.result.value {
print("JSON: \(JSON)")
}
}
}
Я следовал всему коду документа Оксфордского словаря, но распечатанный JSON был далек от JSON в документе. Поэтому я попробовал использовать Alamofire в надежде, что он будет работать правильно, но результат был тот же. https://developer.oxforddictionaries.com/documentation

Update2

Хорошо , я понял, почему это ошибка. Людям, у которых может возникнуть такая же проблема, я публикую ответ на свою проблему.

Код: Выделить всё

   enum JSONError: String, Error {
case NoData = "ERROR: no data"
case ConversionFailed = "ERROR: conversion from JSON failed"
}

func jsonParser() {

let appId = ""
let appKey = ""
let language = "en"
let word = "Ace"
let word_id = word.lowercased() //word id is case sensitive and lowercase is required
let url = URL(string: "https://od-api.oxforddictionaries.com:443/api/v1/entries/\(language)/\(word_id)")!

var request = URLRequest(url: url)
request.addValue("application/json", forHTTPHeaderField: "Accept")
request.addValue(appId, forHTTPHeaderField: "app_id")
request.addValue(appKey, forHTTPHeaderField: "app_key")

URLSession.shared.dataTask(with: request) { (data, response, error) in
do {
guard let data = data else {
throw JSONError.NoData
}
guard let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? NSDictionary else {
throw JSONError.ConversionFailed
}

if let stringJSON = String(data: data, encoding: String.Encoding.utf8) {
print(stringJSON)
}

print(json)

} catch let error as JSONError {
print(error.rawValue)
} catch let error as NSError {
print(error.debugDescription)
}
}.resume()
}
Странный печатный формат JSON Этот пост мне помог. Это беспокоило меня какое-то время. Большое спасибо @EricAya

Подробнее здесь: https://stackoverflow.com/questions/412 ... -in-swift3
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»