遍历数组并从 JSON 文件中提取数据
Posted
技术标签:
【中文标题】遍历数组并从 JSON 文件中提取数据【英文标题】:Iterating over arrays and extracting data from JSON file 【发布时间】:2016-06-06 11:40:24 【问题描述】:这是我从服务器接收的 JSON
Doubt.JSON
我的问题是我收到两个数组类型的“imageData”。我如何提取其中的每一个并将它们分配给集合视图单元格。与第一个 imageData 一样,应该转到一个单元格,然后依次转到下一个单元格。
我正在使用 ALAMOFIRE 和 SWIFTYJSON。如果有人可以帮助我使用/不使用 SwiftyJSON,我将不胜感激。
我的 JSON:
"response" :
"start" : 0,
"docs" : [
"enrollmentId" : [
"2534534246"
],
"fieldName2" : [
"Languages"
],
"locality" : [
"XYZ"
],
"active" : [
true
],
"sex" : [
"Male"
],
"latitude" : [
1.2340
],
"city" : [
"udya"
],
"imageData" : [
"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABkCAYAAAAlg3YKAAA1wklEQVR4AcWd95Nc13XnT+c405MHMyACARDMoCxSibYsrWtXP7h2\/1XXbklea4vyWlW2apUp0SbBIJIgEQaYgMk9nXs\/n\/umgUEgCUis8gN7uvv1fffd+70nn3Mfc3fu3BnHf9IxuXHua76\/\/X5dfRbfeeedr3l4X93dZAJjZpFzKvw3OZcf8fn4e+ppPE6THeeO3\/kxAUsbP+QiH\/l0YsxX\/nF+lBtxnn9++QuP4l94\/VdePnaCOQbLa3LkR+PI8523bFJpokyWJuMAISHhx3Qd1xf4YTwaMXFBEqB8DDkfuTxtvSIhNOn+HjDe2+Pkve81esIPXxtATj+N5z4OaTJOoNfrpVen04n9vf3YvXs3Dvb24sbNm7GxtcUE8lEoFWg5juFwwGsYxWIxSoVClHOFmKrVol7le6kS5y9diHPPXohKvZHwGQp0uie0dIxTAvEYnJM4TBbr5Lkv+2z7Pxugyep4g7wrzpGjQwfnivUHg1i\/cydu81pfX48bN67HzRs3Y8Dkh\/y2v7MXnV4nWRqE79z3\/wOcrF6q09MBWgAAAABJRU5ErkJggg=="
],
"fieldValue2" : [
"English, Hindi, Kannada"
],
"fieldValue1" : [
"11 years"
],
"state" : [
"Karnataka"
],
"id" : "Iuusofijpw",
"email" : [
"cont@dontcare.com"
],
"longitude" : [
12.4352
],
"firstName" : [
"Praqwer"
],
"_version_" : 1521637513434759168,
"experience" : [
10
],
"caseTypes" : [
"A Particular caseType let's say Bheema",
],
"lastName" : [
"Bsdtty"
],
"mode" : [
"Lawyer"
],
"fieldName1" : [
"Experience"
]
,
"state" : [
"Karnataka"
],
"languages" : [
"English",
"Hindi",
"Kannada"
],
"lastName" : [
"KWE"
],
"firstName" : [
"RANDARTY"
],
"sex" : [
"Male"
],
"caseTypes" : [
"Bheema",
],
"enrollmentId" : [
"4253646"
],
"mobile" : [
42534346
],
"id" : "Iurweoin",
"imageData" : [
"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABkCAYAAADzJqxvAAAgAElEQVR4XjS9ebBv2VkdtvY+8zm\/8c5vfj2r1VJrQgNEiMkYi0m2kmAbE3DhlAPEqcSuciquVIrgMhCTgF1BQgSMkW0EthkEGCQQIAQCScgSaqk19Ot+3W++872\/8Yz7nL1T6zvP\/Qelbu793XP28H3rW2t9308d3P2iaxEggIdivcBgmCDQPirTwA8UqlIhiDV8pdB0JZz2AevBg4+mrgHTAoHGMElR1DX8MIJvLKzXojMafgg0dQMFwPM9dI2D8g06aHidD4sWjXYAFBLto1WAcw3asoNrLaxSsF0vLKiqrrJc3fu6t12JWqm5qdnbeWJUJF8OipsQ8UJGq6cvVNjU9MWIbHQUeNhbJxGDSYVn0TPQUv4GxJKG0Skpv+tuHWBqbXQ6WSyOjA\/VtRCUqZYrH4UUv2\/ziJ\/f\/aiwX2jbsXKz3ga\/aN+4CG28vb9o27Fys94Gv2jfuAhtvL2\/aNuxcrPeBr\/g2M2m9YyIB6mAAAAABJRU5ErkJggg=="
],
"active" : [
true
],
"mode" : [
"Kelsa"
],
"city" : [
"Udya"
],
"_version_" : 15216,
"email" : [
"Him@somenone.com"
],
"experience" : [
18223
],
"locality" : [
"XYZ"
]
],
"numFound" : 2
,
"responseHeader" :
"status" : 0,
"QTime" : 5,
"params" :
"q" : "mode:(\"Lawyer\", \"CA\") AND active:true AND city:(\"Bereello\") AND locality:(\"XYZ\") AND caseTypes:(\"Momerty\")",
"wt" : "json"
我的代码:
Alamofire.request(.GET, url!)
.validate()
.responseJSON response1 in
switch response1.result
case .Success:
let json33 = JSON(data: response1.data!)
print(json33)
if let userDict = json33["response"].dictionary
if let array = userDict["docs"]?.array
for imgd in array
let me:String! = imgd["imageData"][0].string
let url = NSURL(string: me)!
let data = NSData(contentsOfURL: url)!
let image = UIImage(data: data)
let imgView = UIImageView(image: image!)
imgView.frame = CGRect(x: 0, y: 0, width: 200, height: 200)
self.view.addSubview(imgView)
【问题讨论】:
这个网站上有很多个类似的问题和答案。看一看。循序渐进:学习如何从 JSON 中提取值。然后学习如何从值中制作图像。然后学习如何制作表格视图。然后学习如何将图像分配给单元格。祝你好运!如果需要,我们会提供帮助。 你好@EricD,MyCode。这就是我一直在做的,我也得到了正确的结果。但是我无法弄清楚何时获得多个“imageData”数组。 :( 【参考方案1】:您的每个字典都有一个图像文本条目,这些字典位于一个数组中。
我会使用flatMap
快速获取这些图像字符串:
let allImageStrings = json["response"]["docs"].flatMap $0.1["imageData"].first?.1
解释:我们遍历 json["response"]["docs"]
并访问元组的第二部分(请记住,SwiftyJSON 对象总是有 (index, value)
),然后我们从那里获取第一个元组的第二部分 ["imageData"] .
它看起来很复杂,但是当您查看 JSON 结构时,它实际上是相当清晰的。
【讨论】:
我明白了。但只有一个问题。我将两个字符串都作为一个大字符串。如何根据实际的形象将两者分开? 如果你使用我的例子,你会得到一个包含两个字符串的数组,而不是一个大字符串。 对不起我的英语。我得到一个包含两个字符串的数组。得到后如何将两者分开?因为我必须将它们中的每一个分配给集合视图单元格。 :( 救命稻草。非常感谢!当我开始遇到将它们分配给集合视图单元格的问题时会回来。 啊!别客气。 ;) 是的,如果您遇到困难,请不要犹豫发布一个新问题。以上是关于遍历数组并从 JSON 文件中提取数据的主要内容,如果未能解决你的问题,请参考以下文章