У меня есть строка, напечатанная следующим образом:
["answers": <__NSArrayI 0x7fb0bce08550>(
{
qid = 884;
value = (
fSociety
);
}
)
, "uniqid": t-26963212]
Я преобразую NSObject в Json, используя кодировщик, подобный этому
let realm = try! Realm()
let savedExamResponse = realm.object(ofType: SavedExamResponse.self, forPrimaryKey: id)
answersToSubmit.uniqid = savedExamResponse?.uniqueId
var answerListToSubmit = [QuestionAnswersToSubmit]()
for item in (savedExamResponse?.questionAnswerList)! {
var answerToSubmit = QuestionAnswersToSubmit()
answerToSubmit.qid = item.questionId
answerToSubmit.value.append(item.selectedOption)
answerListToSubmit.append(answerToSubmit)
}
let answersToSubmit = SubmitAnswerModel(answers:answerListToSubmit,uniqid:savedExamResponse?.uniqueId)
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
let data = try? encoder.encode(answersToSubmit)
do {
if let jsonObj = try JSONSerialization.jsonObject(with: data!, options : .allowFragments) as? [String:AnyObject]
{
print(jsonObj) // use the json here
} else {
print("bad json")
}
} catch let error as NSError {
print(error)
}
Мне нужно отправлять параметр BODY в моем API, поэтому всякий раз, когда япопытаться отправить это значение я получаю Invalid top-level type in JSON write'
.Я использую Alamofire, как это
let urlString = UrlCollection.submitAnswerUrl + "uniqid=" + answersToSubmit.uniqid! + "&token=" + token
var objectDictionaries = [NSDictionary]()
let allObjects = answersToSubmit
var request = URLRequest(url: URL(string: urlString)!)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: data, options: JSONSerialization.WritingOptions.prettyPrinted)
Alamofire.request(request)
.responseJSON { response in
switch response.result {
case .failure(let error):
print(error)
if let data = response.data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
case .success(let responseObject):
print(responseObject)
}
}
Я не могу понять, что именно ошибка.Это из-за неправильного формата JSON, если тогда, как я должен сделать это правильно.Любая помощь будет высоко ценится.Спасибо