Допустим, я пытаюсь разобрать этот конкретный файл JSON с помощью SwiftUI:
data.json
[
{
"number": 1,
"word": "hello",
"sentence": {
"word_one": "my",
"word_two": "name"
"word_three": "is"
"word_four": "jeff"
}
},
{
"number": 2,
"word": "there",
"sentence": {
"word_one": "i",
"word_two": "dream"
"word_three": "about"
"word_four": "cheese"
}
}
]
Я понимаю, как анализировать number
и word
, но у меня проблемы с тем, как анализировать все в sentence
. Я новичок в программировании для iOS, и ресурсы, на которые я смотрел, меня сбивают с толку. Это код, который у меня есть до сих пор:
struct Content: Codable, Hashable {
let number: Int
let word: String
}
struct ContentView: View {
func jsonParse() -> [Content] {
let url = Bundle.main.url(forResource: "data", withExtension: "json")!
let data = try! Data(contentsOf: url)
let decoder = JSONDecoder()
let products = try? decoder.decode([Content].self, from: data)
return products!
}
var body: some View {
NavigationView {
List {
ForEach(jsonParse(), id: \.self) { content in
VStack(alignment: .leading, spacing: 0) {
Text("\(content.word)")
}
}
}
}
}
}
Спасибо за помощь!
Ваши данные JSON содержат два словаря, которые не являются числовыми и словесными.
@ElTomato Я что-то не так делаю со своей структурой?
Вы можете объявить
sentence
как словарь[String:String]
@Paulw11Paulw11 Как мне тогда создать текст с
sentence
наContentView
? Будет ли это что-то вродеText("\(content.sentence.word_one)")
?Нет, вам нужно будет получить
keys
словаря и отсортировать массив, а затем перебрать отсортированный массив для ключей и получить доступ к значениюfor key in dictionary.keys.sorted { Text(dictionary[key])
; Я бы поставил ключи и сортировку за вычисляемой переменной в вашей модели и использовалForEach
Ваши данные JSON недействительны.
@ElTomato Как мне его изменить?