HTTP Cookieからシリアル化されたjsonオブジェクトを読み込もうとしています。文字列は、このSwiftのHTTPCookieのJSONエラーが動作しない
"{\"status\": 400\054 \"code\": \"14040\"\054 \"links\": {\"self\": \"\"}\054 \"title\": \"Conflicting Email\"}"
のように見えるので、それにUnicodeエンティティが好きであります\054
ちょうどカンマである,
私はこの
if let data = cookieValue.data(using: .ascii) {
do {
let obj = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String : AnyObject]
// print("Successfull: \(obj)")
} catch let error as NSError {
// print("Cannot convert data to json: \(data)\nError: \(error)")
}
}
のようなJSONオブジェクトに文字列を変換しようとすると、
それは言って私にエラーを返します:
Error: Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Invalid escape sequence around character 17.) UserInfo=0x78e586c0 {NSDebugDescription=Invalid escape sequence around character 17.}
文字17は\054
の場所です。
ユニコードエンティティをテキストに変換するにはどうすればよいですか?
UnicodeまたはASCIIをエンコードしていますか?彼らは同じ文字のためのいくつかの共通のコードを持っているかもしれませんが、彼らは異なるエンコーディングです。 – user28434
また、 '\ 054'は' 54'として解析されていませんか? 「\」は「0」だけをエスケープします。 –
user28434
JavaScript文字列のリテラルエスケープのような匂いがします。 JSでは '\ 0'はヌル文字でも、1〜3桁の8進数エスケープの一部でもかまいません。オクタル0o54は小数点第44位はASCIIカンマです。オクタルエスケープは混乱して無駄です。そのため、JSON標準の一部ではありません(実際にはnullエスケープ)。クッキーを作成するコードがJS-string-literal-escapeに既にエンコードされたJSON値を決めたのは不思議ですが、任意の文字をクッキーにエンコードする標準的な方法がないため、狂ったことをする可能性があります。 – bobince