gpt4 book ai didi

json - 返回分成不同值的 json 数据 Swift 4

转载 作者:行者123 更新时间:2023-11-28 15:07:16 25 4
gpt4 key购买 nike

目前我们有以这种格式返回的 json 值

 "CSS_RGB__c": "rgb(190,102,123)",

我正在尝试将这些值转换为单独的 r、g、b 值(例如 r = 190、g = 102、b = 123)

以前这行得通:

if let raw = dictionary["CSS_RGB__c"] as? NSString {
let filtered = raw.substring(from: 4).trimmingCharacters(in: CharacterSet(charactersIn: ")"))
var values = filtered.components(separatedBy: ",")
if values.count == 3 {
self["r"] = NSString(string: values[0]).floatValue as NSNumber?
self["g"] = NSString(string: values[1]).floatValue as NSNumber?
self["b"] = NSString(string: values[2]).floatValue as NSNumber?
}
}

但是使用 swift 4 解析 json 的新方法我不完全确定如何拆分值:

struct Family: Codable {
let cssRGBC: String

enum CodingKeys: String, CodingKey {
case cssRGBC = "CSS_RGB__c"
}
}

最佳答案

您可以使用正则表达式在两个字符串之间查找字符串,映射其范围以提取结果,使用 components(separatedBy: ",") 获取 rgb 组件并从中初始化一个新整数如果存在,字符串会修剪空白:

let raw = "rgb(190,102,123)"
let regexPattern = "(?<=rgb\\()(.*)(?=\\))"
if let rgb = raw.range(of: regexPattern, options: .regularExpression)
.map({String(raw[$0])})?
.components(separatedBy: ",")
.flatMap({Int($0.trimmingCharacters(in: .whitespaces))}){
print(rgb) // "[190, 102, 123]\n"
}

关于json - 返回分成不同值的 json 数据 Swift 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48267615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com