То, что вы опубликовали, выглядит как вывод на печать отладчиком, а не JSON с вашего сервера. Я собираюсь предположить, что ваш JSON на самом деле выглядит так:
[
{
"ingredients": "asdasdasd",
"price": 14,
"_id": {
"$oid": "5e8e3706f00ca80f251485c3"
},
"category": "sadad",
"available": "Disponibile",
"name": "asdadasd"
}
]
Учитывая это, вы можете использовать структуру модели, такую как
struct Recipe: Codable {
let ingredients: String
let price: Int
let id: ID
let category, available, name: String
enum CodingKeys: String, CodingKey {
case ingredients, price
case id = "_id"
case category, available, name
}
}
struct ID: Codable {
let oid: String
enum CodingKeys: String, CodingKey {
case oid = "$oid"
}
}
typealias Recipes = [Recipe]
чтобы проанализировать его, используя
do {
let recipes = try JSONDecoder(Recipes.self, from: myData)
let firstOid = recipe.first?.id.oid
} catch {
print(error)
}
Тем не менее, я бы рекомендовал избегать обобщенных c имен, таких как myArray
для ваших переменных.
Кроме того, при получении данных JSON с вашего сервера нет необходимости сначала преобразовывать их в String
, а затем обратно в Data
, а затем передавать его анализатору JSON - просто передайте необработанные данные сервера.