替换\"的实例用"

时间:2017-01-12 10:59:54

标签: json swift string replace escaping

我试图从json文件中删除不需要的斜杠。我不能简单地替换\的所有实例,而是我需要转义\"的实例。只是"

e.g。我的json字符串看起来像这样:

let jsonStringTrimmed = jsonString.replacingOccurrences(of: "\"", with: """)

我无法弄清楚查找和替换的语法:

let jsonStr = try String(contentsOf: path, encoding: String.Encoding.utf8)
let jsonStringTrimmed = jsonStr.replacingOccurrences(of: "\", with: """)
let json = try JSONSerializer.toDictionary(jsonStringTrimmed)

另一个可能的缺陷是param d是base64编码的字符串,所以我需要能够避免替换\"在该键的值内

目标是能够使用jsonStringTrimmed,如下所示:

 do {
     let jsonStr = try String(contentsOf: path, encoding: String.Encoding.utf8)

     let json = try JSONSerializer.toDictionary(jsonStr)
 }
 catch {
     print("Error reading file : \(error)")
 }

更新:

我最初尝试过:

 if let jsonData = try? Data(contentsOf: path){
        if let array = (try? JSONSerialization.jsonObject(with: jsonData, options: [])) as? [[String: Any]] {
            for i in array{
                print(array[i]?["data"] as! String)
                let dataJsonStr = array[i]?["data"] as! String
                if let dataDict = try? JSONSerializer.toDictionary(dataJsonStr){
                    print("a : \(dataDict["a"] as! String)")
                }
            }
        }
        else{
                print("in the else of if let array")
        }
    }
    else{
        print("in the else of if let jsonData")
    }

我进入捕获并收到错误jsonIsNotDictinary

更新2:尝试使用NivraD的方法循环数组:

OPTIONS

但这给了我错误: 无法下标类型为[[String:Any]]的值,其索引类型为Dictionary指向: print(employeeArray [i]?[" data"] as!String)

1 个答案:

答案 0 :(得分:2)

您的字符串是import functools tab = ["STAR 13","STAR 13, 23","STAR 1, 2 and 3 and STAR 1"] digit=functools.reduce(lambda x,y: x+re.findall("\d+",y),filter(lambda x: re.match("^STAR ",x),tab),[]) 数组,因此只需将其转换为JSON,无需替换任何内容。首先从Array获取Data,然后将此jsonStringdata一起使用,以获取JSONSerialization

Array