swift - 我正在尝试从 json 文件中提取数据并将该数据写入变量
问题描述
我有一个 json 文件,我将它添加到我的项目中。该文件包含 20 组数据。此数据的键是“代码”、“名称”、“日期”、“主”、“Sup”,与这些键关联的数据是字符串类型。
我已将数据读取到局部变量myData
,然后通过使用 print 语句打印myData
.
我想使用键“日期”和“主”提取数据myData
并将其组合到另一个字符串变量中,我希望能够为 20 个数据集中的每一个执行此操作。
我曾尝试使用myData.Date
& myData.Main
,但编译器抱怨并称我为白痴。我在想我应该将内容写入myData
数组或字典,但一直无法做到这一点,在互联网上搜索了几天的解决方案之后,是时候寻求帮助了。
myData
包含以下形式的数据:
[{
"Code" : "ABC"
"Name" : "Fred"
"Date" : "01/10/2019 13:00"
"Main" : "1,2,3,4,5,6"
"Sup" : "Nil"
},
{
"Code" : "DEF"
"Name" : "Pete"
"Date" : "03/10/2019 11:00"
"Main" : "7,8,9,10,11,12"
"Sup" : "Nil"
}]
我使用以下方法验证了 json 数据是否存在:
let myData=readJFile(myJasonData)//this puts the json data into myData
print(myData)//this prints the contents of myData to console
我创建了一个数据结构
struct JsonData: Codable
{
var code : String
var Name : String
var Date : String
var Main : String
var Sup : String
}//struct lotData
并确保 json 文件中的键匹配
let myDecoder = JSONDecoder()
let arrayDict = try myDecoder.decode(JsonData.self, from: myData)
print(arrayDict.Date)
print(arrayDict.Main)
预期的结果是
variable1 = "01/10/2019 13:00,1,2,3,4,5,6"
variable2 = "03/10/2019 11:00,7,8,9,10,11,12"
非常感谢期待。
解决方案
请catch
和print
解码错误。他们确切地告诉你出了什么问题。
JSON 显然是一个数组。请注意[]
let result = try myDecoder.decode([JsonData].self, from: myData)
for item in result {
print(item.Date, item.Main)
}
推荐阅读
- apache-superset - Apache Superset - 交互式标记不起作用/ javascript 被超集忽略
- onload - 使用浏览器后退按钮时如何禁用正文加载
- css - 如何让 div 表格单元格中包含的 div 填充?
- reactjs - React .map 不是函数但不能传递数组
- python-3.x - Space Invaders bug pygame
- python - Pandas:选择具有列数据类型的行
- jersey - JSF 客户端错误使用 JAX-RS 制作的 Rest Service
- mvvm - 在页面加载之前设置传递的参数
- python - 从 html 按钮运行 python 脚本时出现 404 错误 托管 Google App Engine 网站
- c# - 保存到文件路径时访问被拒绝