假設我有 Int 陣列:
var intArr = [1,2,3,4]
和一串字典:
var dictString = "[{\"id\": value1, {\"id\":value2,}, {\"id\":value3}, {\"id\":value4}]"
那些 value1,2,3,4 也是 Int 型別
我想用 stringArr 中的值替換 value1,2,3,4。我的期望是
"[{\"id\": 1, {\"id\":2,}, {\"id\":3}, {\"id\":4}]"
謝謝!
uj5u.com熱心網友回復:
可能這是你可以通過一種捕鳥方式來實作的
注意:我假設您有以下輸入
var intArr = [1,2,3,4]
var dictString = "[{\"id\": 0}, {\"id\":0}, {\"id\":0}, {\"id\":0}]"
方法1:
為String
extension String {
func getMapped(with list: [Int]) -> String? {
guard let jsonData = self.data(using: .utf8) else {
return nil
}
do{
var counter = -1
if let json = try JSONSerialization.jsonObject(with: jsonData) as? [[String: Int]]{
let result = json.map { ob -> [String: Int] in
counter = 1
return counter < list.count ? ["id" : list[counter]] : ob
}
return String(describing: result)
}
}catch let e {
print("e \(e)")
return nil
}
return nil
}
}
現在您可以呼叫該函式
print(dictString.getMapped(with: intArr))
Output: Optional("[[\"id\": 1], [\"id\": 2], [\"id\": 3], [\"id\": 4]]")
方法2:
因為我可以看到id所有字典物件的共同點,所以您可以簡單地將您intArry的映射轉換為字典物件陣列。
let mapped = intArr.map({["id": $0]})
let mappedString = String(describing: mapped)
print(mappedString)
Output: [["id": 1], ["id": 2], ["id": 3], ["id": 4]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/495242.html
