#json #swift2 #xcode7 #swifty-json
#json #swift2 #xcode7 #swifty-json
Вопрос:
Ну, я действительно новичок в Swift, и я использовал SwiftyJSON, чтобы упростить анализ данных JSON, поступающих из API.
У меня есть ответ данных, который выглядит следующим образом:
[
{
"fname": < String value>
"mname": < String value>
"lname": < String value>
"weights": [
{
"date": <String value>,
"weight": <String value>
},
{
"date": <String value>,
"weight": <String value>
}
]
Для моего способа синтаксического анализа SwiftyJSON, вот мой код
let swiftyJSON = JSON(data: data!)
for item in swiftyJSON.arrayValue{
self.firstName = item["fname"].stringValue
self.middleName = item["mname"].stringValue
self.lastName = item["lname"].stringValue
//JSON Array "weights" code snippet below
}
Для имен я разобрал его в строку, но с "weights"
. Я понятия не имею, как это сделать. Я пробовал это с помощью этого:
for key in item["weights"]["weight"].arrayValue{
self.allWeights.append(key.stringValue)
}
И это не работает. Может ли кто-нибудь помочь мне с этим? большое спасибо.
Комментарии:
1. Я использую,
xcode 7.3
значит, этоswift 2.2
правильно?
Ответ №1:
weights
содержит массив словарей
...
if let weights = item["weights"].array {
for weightItem in weights {
let date = weightItem["date"].stringValue
let weight = weightItem["weight"].stringValue
print(date, weight)
}
}
Комментарии:
1. Спасибо, сэр @vadian, я все еще не могу разобрать его в строковый массив, но с вашей помощью у меня уже есть словарь jsonarray. вот фрагмент кода image.prntscr.com/image/91e86ca71c474c28ae7b9199ecca65b0.png
2. и вот результат image.prntscr.com/image/cbed3c440f2e4d21871b4539dd137ab0.png я напечатал
weights
, и он получил jsonarray. Но в следующих строках это не было проанализировано. Большое вам спасибо!
Ответ №2:
Это может быть немного более быстрым ответом. Что мы здесь делаем, так это перебираем массив json с помощью map и возвращаем объект dictionary для каждого элемента в массиве. Функция map, конечно, создаст свой собственный массив и добавит к нему каждый объект словаря, прежде чем вернуть весь массив, хранящийся в переменной weights. Возможно, мозг почти поджарился, поэтому, если я не совсем правильно понял, дайте мне знать.
let swiftyJSON = JSON(data: data!)
let weights = swiftyJSON["weights"].arrayValue.map {["date": $0["date"].stringValue, "weights": $0["weights"].stringValue]}