我有一个数字数组,例如[1、2],我想将其转换为json格式,如下:
["id_list":
[
{
"id" : 1
},
{
"id" : 2
}
]
]
这可以在Swift中完成吗?
答案 0 :(得分:0)
您可以尝试
struct Root :Codable {
let id_list:[InnerItem]
}
struct InnerItem : Codable {
var id:String
}
//
let arr = [1,2]
let js = Root(id_list:arr.map { InnerItem(id: "\($0)")})
do {
let en = try JSONEncoder().encode(js)
let json = String(data: en, encoding:.utf8)!
print(json)
}
catch {
print(error)
}
//
答案 1 :(得分:0)
尝试一下
let dic = ["id_list":[["id": "1"], ["id": "2"], ["id": "3"]]]
let encoder = JSONEncoder()
if let jsonData = try? encoder.encode(dic) {
if let jsonString = String(data: jsonData, encoding: .utf8) {
print(jsonString)
}
}
您的输出将是这样
{“ id_list”:[{“ id”:“ 1”},{“ id”:“ 2”},{“ id”:“ 3”}]}
答案 2 :(得分:0)
为此,您可以尝试使用带有for each
循环的简单方法:
let arr = [1,2,3,4]
var str = "[\"id_list\":["
for element in arr {
str = str + "{\"id\": \(element)},"
}
str.remove(at: str.index(before: str.endIndex))
str = str + "]]";
输出
["id_list":[{"id": 1},{"id": 2},{"id": 3},{"id": 4}]]
答案 3 :(得分:0)
采用Codable
struct Ident : Codable {
let id : Int
}
将数组映射到结构项
let array = [1, 2, 3]
let idArray = array.map{ Ident(id:$0) }
然后使用JSONEncoder
创建JSON
do {
let jsonData = try JSONEncoder().encode(["id_list" : idArray])
let jsonString = String(data: jsonData, encoding:.utf8)!
print(jsonString) // {"id_list":[{"id":1},{"id":2},{"id":3}]}
} catch { print(error) }
您的JSON格式无效,为{"id_list": ... }
或[{"id_list": ... }]
,但不能为["id_list": ... ]