我正在使用NSURLSession与Web服务进行通信。然而,在Webservice的JSON中我得到了像这样的Biblotecas de cat& amp; aacute; logos de Marcas,即BiblotecasdecatálogosdeMarcas。我需要摆脱文本cat& aacute; logos并获取原始字符串。我怎样才能做到这一点。 我正在使用此代码来解析JSON。
guard let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String:Any] else{
self.showalertview(messagestring: parseError)
return
}
答案 0 :(得分:2)
最好的方法是让网络服务的所有者发送符合UTF-8的文本。
如果无法做到这一点,NSAttributedString
可以非常方便地解码HTML实体,这是添加计算属性String
的{{1}}扩展名。由于转换可能由于多种原因而失败,因此返回值是可选的:
htmlDecoded
并使用它:
extension String {
var htmlDecoded : String? {
guard let encodedString = self.data(using: .utf8) else { return nil }
let options : [String:Any] = [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue]
return try? NSAttributedString(data: encodedString, options: options, documentAttributes: nil).string
}
}