Swift - JSON序列化无效 JSON
Swift - JSONSerialization invalid JSON
我正在通过 HealthKit
访问健康记录,问题是当我检查 FHIR
数据时,使用 [=16= 检查时 JSON 数据无效].我不太熟悉JSONSerialization
,这是我第一次真正使用它。
let jsonObject = try JSONSerialization.jsonObject(with: fhirRecord.data, options: [])
print(jsonObject)
{
lotNumber = 11111;
occurrenceDateTime = "2021-01-01”;
patient = {
reference = "resource:0";
};
performer = (
{
actor = {
display = “Some place here“;
};
}
);
resourceType = Immunization;
status = completed;
vaccineCode = {
coding = (
{
code = 1;
system = “URL_HERE”;
},
{
code = 28581000087106;
system = “URL_HERE”;
}
);
};
}
JSON序列化与Codable无关,在Swift中一般应避免。它仅在 Swift 中,因为它是从 ObjC 桥接而来的,即使在 ObjC 中也有很大的局限性。
isValidJSONObject
并没有告诉你 JSON 数据是有效的。它告诉您可以通过 JSON 序列化将 ObjC 对象转换为 JSON(同样,与 Codable 完全无关)。
摆脱JSON序列化。将您的 JSON 插入 https://app.quicktype.io 以为其生成 Codable 模型,并使用 JSONDecoder 对其进行解码。 JSON序列化只会给出 [String: Any]
,这在 Swift 中很难使用(在 ObjC 中也不是很好)。 JSON解码器会给你一个正确的结构。
正如@RobNapier 指出的那样,我需要 FHIRModels
来自 Apple。与手动使用混乱的 Codable
数据方法相比,我能够更轻松地获取数据。
import ModelsR4
let resource = try decoder.decode(Immunization.self, from: data)
打印输出正常
28581000087106
28581000087106
我正在通过 HealthKit
访问健康记录,问题是当我检查 FHIR
数据时,使用 [=16= 检查时 JSON 数据无效].我不太熟悉JSONSerialization
,这是我第一次真正使用它。
let jsonObject = try JSONSerialization.jsonObject(with: fhirRecord.data, options: [])
print(jsonObject)
{
lotNumber = 11111;
occurrenceDateTime = "2021-01-01”;
patient = {
reference = "resource:0";
};
performer = (
{
actor = {
display = “Some place here“;
};
}
);
resourceType = Immunization;
status = completed;
vaccineCode = {
coding = (
{
code = 1;
system = “URL_HERE”;
},
{
code = 28581000087106;
system = “URL_HERE”;
}
);
};
}
JSON序列化与Codable无关,在Swift中一般应避免。它仅在 Swift 中,因为它是从 ObjC 桥接而来的,即使在 ObjC 中也有很大的局限性。
isValidJSONObject
并没有告诉你 JSON 数据是有效的。它告诉您可以通过 JSON 序列化将 ObjC 对象转换为 JSON(同样,与 Codable 完全无关)。
摆脱JSON序列化。将您的 JSON 插入 https://app.quicktype.io 以为其生成 Codable 模型,并使用 JSONDecoder 对其进行解码。 JSON序列化只会给出 [String: Any]
,这在 Swift 中很难使用(在 ObjC 中也不是很好)。 JSON解码器会给你一个正确的结构。
正如@RobNapier 指出的那样,我需要 FHIRModels
来自 Apple。与手动使用混乱的 Codable
数据方法相比,我能够更轻松地获取数据。
import ModelsR4
let resource = try decoder.decode(Immunization.self, from: data)
打印输出正常
28581000087106
28581000087106