首页 > 解决方案 > 我正在尝试从 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"

非常感谢期待。

标签: swift

解决方案


catchprint解码错误。他们确切地告诉你出了什么问题。

JSON 显然是一个数组。请注意[]

let result = try myDecoder.decode([JsonData].self, from: myData)
for item in result {
   print(item.Date, item.Main)
}

推荐阅读