Есть проблема в декодировании Json


#1

Получаю json вот такого формата

["data: [{"ID»:1111,»Name»:»Test111»},{«ID»:22222,»Name»:»Test222»}]]
struct Test: Decodable {
var d: [TestData]
}
struct TestData: Decodable {
var ID: Int
var Name: String
}

let dictionary = try JSONDecoder().decode([Test].self, from: data)

Если перед первым и последним знаком [ поставить {, то есть

[{data: [{"ID»:1111,»Name»:»Test111»},{«ID»:22222,»Name»:»Test222»}]}]

То все работает Увы, изменить не могу нужно как-то это разбирать

Попробовал делать так

let dictionary = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as! [String:AnyObject]
var targetDict: String = “”
for (_, value) in dictionary {
targetDict = value as! String
}
let dataJson = targetDict.data(using: String.Encoding.utf8)
let json = try JSONDecoder().decode([TestData].self, from: dataJson!)
print(json)

Получаю в таком формате, что переменные вытащить не могу

[report.ViewController.(unknown context at $102cf7e20).(unknown context at $102cf7e8c).TestData(ID: 1111, Name: "test111»)]

Есть шансы как-то декодировать или оставить строкой и разбирать уже просто строку


#2

Так вы неверно сделали декодирование в Test модель. Это же у вас не массив, а объект.
let dictionary = try JSONDecoder().decode(Test.self, from: data)
Или я что-то не так понял… почему ваш json начинается с квадратной скобки?
Покажите полный json.


#3

Полный

["data: [{"ID»:1111,»Name»:»Test111»},{«ID»:22222,»Name»:»Test222»}]]

Я его в файл сохранил? добавил {}
Вышло так [{data: [{"ID»:1111,»Name»:»Test111»},{«ID»:22222,»Name»:»Test222»}]}]
Так все отработало, а вот без {} этих знаков нет

Могу получить [{"ID»:1111,»Name»:»Test111»},{«ID»:22222,»Name»:»Test222»}] как String, потом преобразовать в массив или словарь не выходит, говорит это у вас текст там нет переменных


#4

Тогда это не json. JSON начинается и заканчивается символами { и }.
Найдите любой валидатор и проверьте.


#5

Это то что сервер отдает ка json Упаковывает явой json библиотеками
В принципе вопрос решил. Спасибо за внимание


#6

Совет на будущее, не работайте с таким сервером, если это по работе, вам обязаны предоставить нормальные условия для работы. Если не хотят переделывать, тогда это говорит о плохом качестве разработчиков.


#7

Нужно по работе и исправлять не будут, так как у них там все это работает
Принимаю как String, добавляю свое перевожу в json и уже в нормальном виде обрабатываю
Это дольше, но это только для синхронизации, остальное уже с внутренней базой работает, так что не критично


#8

Сочувствую…