nastya_zholudeva
@nastya_zholudeva

Почему каждая итерация цикла for JSON объекта является строкой?

for item in data {
   print(item)
}

data - это обычный JSON
Почему item имеет у меня странный вид строки?
("0", {
  "title" : "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
  "userId" : 1,
  "id" : 1,
  "body" : "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
})
("1", {
  "title" : "qui est esse",
  "userId" : 1,
  "id" : 2,
  "body" : "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
})
("2", {
  "title" : "ea molestias quasi exercitationem repellat qui ipsa sit aut",
  "userId" : 1,
  "id" : 3,
  "body" : "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut"
})
("3", {
  "title" : "eum et est occaecati",
  "userId" : 1,
  "id" : 4,
  "body" : "ullam et saepe reiciendis voluptatem adipisci\nsit amet autem assumenda provident rerum culpa\nquis hic commodi nesciunt rem tenetur doloremque ipsam iure\nquis sunt voluptatem rerum illo velit"
})

И как сделать так, чтобы item был также JSON?
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 1
@freeg0r
.. some dude ..
data у вас, это не JSON (что бы вы под этим не подразумевали), data у вас это массив строк ([String]).
Вообще JSON это строка, когда вы получаете JSON из сетевого ответа вы преобразуете эту строку в какой-то обьект (чаще всего Array или Dictionary), a за тем делаете итерации по этим объектам. Через строку невозможно сделать итерацию, если только по символам (Characters).
Если swift 4, создайте объекты:

struct Container: Decodable    {
let messages : [Message]
}
struct Message : Decodable {
        private enum CodingKeys : String, CodingKey {
            case userId
            case id
            case title
            case body
        }

        let userId, id: Int
        let title, body: String
}

let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .iso8601
decoder.decode(Container.self,  from: data)
// здесь data это Data
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы