json - SWIFTUI 中的 JSON 解析数据
问题描述
在我非常基本的代码中,我需要从 JSON 获取数据。但我只得到一个值。我有这个输入 JSON:
{
"features":
[
{
"geometry":
{
"coordinates": [
14.49961,
50.03353
],
"type": "Point"
}
},
{
"geometry":
{
"coordinates": [
14.4213,
50.00144
],
"type": "Point"
}
}
],
"type": "FeatureCollection"
}
以及 SwiftUI 中的这段代码,我需要在其中获取所有数据抛出 JSON。字段“类型”的值有效,但我无法获得其他字段 - 我做错了什么?
import Foundation
import SwiftUI
import MapKit
import Combine
class fetchResults{
func getData(completion: @escaping (RequestA) -> ()){
let url = URL(string: "https://api.golemio.cz/v2/vehiclepositions?limit=2")!
var request = URLRequest(url: url)
request.addValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
request.addValue("XXXXXXXXXXXXXXXX", forHTTPHeaderField: "x-access-token")
let task = URLSession.shared.dataTask(with: request) { data, response, error in
let result = try! JSONDecoder().decode(RequestA.self, from: data!)
if let response = response {
if let data = data, let body = String(data: data, encoding: .utf8) {
DispatchQueue.main.async {
completion(result)
}
}
} else {
print(error ?? "Unknown error")
}
}
task.resume()
}
}
struct RequestA: Decodable {
var features: [Features]!
var type: String
}
struct Features: Decodable {
var geometry: Geometry
}
struct Geometry: Decodable {
var coordinates: [Double]
var type: String
}
struct ContentView: View {
@State var res = RequestA()
var body: some View {
Text(res.type ?? "N/A") // <<< "res.type" work but "res.features.geometry.coordinates[0] not
.onAppear()
{
fetchResults().getData
{(res) in
self.res = res
}
}
}
}
我会很高兴,如果有人帮我告诉我,我做错了什么。
解决方案
res.features.geometry.coordinates
res 是RequestA
并且 " RequestA
" 具有features
类型的属性[Features]
- 一个 "Features" 数组
Array of features
没有属性“ geometry
”所以你不能写一个像res.features.geometry
您的意思是RequestA
“功能”属性不是类型Features
吗[Features]
?或者你的意思是对数组中的每个特性做一些事情,或者可能是第一个特性等等?
如果您对解析 GeoJSON 感兴趣,请参阅Swift GeoJson Parse
推荐阅读
- c++ - 如何使用 GL_LINES 在视口周围绘制边框?
- r - R gganimate 因子水平之间的平滑过渡
- encryption - 关于用于 SSH Key Vault 应用程序的加密算法的建议
- python - 我有一个包含多个数组的 npy 文件,我想将其添加到数据框中的列中 - python
- flutter - Flutter:IconButton 不接收 onPressed 函数()
- c# - 如何使用 Rg.Plugins.Popup 将 XAML 和模板组合成一个 C# 模板?
- c++ - 进程以 -1073741571 状态终止,具有百万点的最近对算法
- python - 为什么我应该使用散列向量器进行文本聚类?
- node.js - 无法使用 Node.js 从嵌套目录中获取文件内容
- macos - 在 macOS 上通过终端输入 Sublime Text 许可证密钥