[英]convert String json to array swift
I have a JSON file and parse that with Alamofire. 我有一个JSON文件,并使用Alamofire进行了解析。 How can I convert received String JSON file to array like this: 如何将接收到的String JSON文件转换为数组,如下所示:
["name1", "name2", "name3", "name4"]
This is current Alamofire output when print: 这是打印时当前的Alamofire输出:
name1
name2
name3
name4
This is the JSON file: 这是JSON文件:
[
{
name: "name1
},
{
name: "name2",
detail: "10"
},
{
name: "name2",
detail: "11"
},
{
name: "name3",
detail: "12"
},
{
name: "name4",
detail: "13"
}
]
alamofire : alamofire:
AF.request(SEARCH_BASE_URL).response { (response) in
do {
self.se = try JSONDecoder().decode([Search].self, from: response.data!)
for each in self.se {
let list = Struct_Search(name: each.name, detail: each.detail)
self.see.append(list)
print(each.name)
}
} catch {
print(error)
}
}
let str = """
name1
name2
name3
name4
"""
let array = str.components(separatedBy: "\n")
print(array)
//["name1", "name2", "name3", "name4"]
@mehran kamalifard Updated Answer @mehran kamalifard 更新了答案
import Foundation
class nameModel {
var name:String = "";
init(withData:[String:String]) {
if let nameStr = withData["name"] {
self.name = nameStr
}
}
}
var finalResultArr:[String] = []
let dataArr = [[
"name":"name1",
],
[
"name": "name2",
"detail" : "10"
],
[
"name": "name3",
],
[
"name": "name4",
"detail" : "10"
]
]
var namesList:[nameModel] = []
for data in dataArr {
namesList.append(nameModel.init(withData: data))
}
finalResultArr = namesList.compactMap({$0.name})
print(finalResultArr)
//["name1", "name2", "name3", "name4"]
You can do it using the below code, 您可以使用以下代码进行操作,
var yourArray : []
Alamofire.request(your url here).validate().responseJSON { response in
switch response.result {
case .success:
print("success")
if let json = response.data {
do{
let data = try JSON(data: json)
let yourString = data["your key"]
print("Parsed String: \(yourString)")
// now add that yourString into an array
yourArray.append(yourString)
}
catch{
print("JSON Error")
}
}
case .failure(let error):
print(error)
}
}
map
is your friend map
是你的朋友
self.se = try JSONDecoder().decode([Search].self, from: response.data!)
let names = self.se.map { $0.name }
Why do you map Search
to Struct_Search
? 为什么将 Search
映射到Struct_Search
? This is redundant. 这是多余的。
Please folly my code. 请愚弄我的代码。 Which i parsed and get list name from response. 我解析并从响应中获取列表名称。
Alamofire.request(SEARCH_BASE_URL).response { (response) in
guard let data = response.data else { return }
let responseJSON = try? JSONSerialization.jsonObject(with: data, options: [])
if let items = responseJSON as? [[String: Any]] {
var names: [String] = []
for item in items {
if let name = item["name"] as? String {
names.append(name)
}
}
print("names: \(names)")
} else {
print("json is not array dictionary")
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.