добавить картинку в JSON? - PullRequest
       91

добавить картинку в JSON?

0 голосов
/ 13 октября 2018

Это фрагмент файла json, который я использую

 {
"id" : 12252013,
"name" : "Lassy",
"breed" : "Cocker Spaniel",
"photo_large" : 
"http://www.raywenderlich.com/downloads/puppies/spaniel.jpeg",
"price" : 39999
},

Я хочу использовать локальный png, как этот, но в результате получается пустое изображение.

{
"id" : 12252012,
"name" : "Penny",
"breed" : "Dachshund",
"photo_large" : "ready.jpg",
"cuddle_factor" : 5,
"price" : 29999
},

enter image description here

Как мне заставить его показать, как на картинке ниже, где используется специально размещенный путь для JPEG?

enter image description here

Я пытался использовать изображение, размещенное в Интернете, но пока не смог найти нужного.

Ответы [ 3 ]

0 голосов
/ 13 октября 2018

В объектах json вы можете указать путь к файлу, например, «photo_large»: «file: /// XXXXXXXXXXXXXXXXXXXX / XXXX / XXX / filename». Вы можете преобразовать путь к файлу в URI и использовать его.Надеюсь, это поможет вам.

0 голосов
/ 13 октября 2018

Не стоит добавлять данные изображения в json.Поместите некоторый URL изображения в json и используйте его.Если вам нужно отправить изображение в веб-сервис, используйте многочастный формат, чтобы загрузить изображение вместе с другой информацией.

Исходя из вашего вопроса, когда вы хотите показать изображение, вы можете использовать CacheManager вместе с DownloadManager, чтобы получить изображение и показать его.

0 голосов
/ 13 октября 2018

В локальном случае

"photo_large": "ready.jpg"

необходимо использовать

let res = try? JSONDecodable().decode(Root.self,from:data) 
let image = UIImage(named:res.photoLarge)

struct Root : Codable {
   let id: Int
   let name, breed, photoLarge: String
   let cuddleFactor, price: Int

   enum CodingKeys: String, CodingKey {
    case id, name, breed
    case photoLarge = "photo_large"
    case cuddleFactor = "cuddle_factor"
    case price
  }
}
...