2017-11-08 2 views
-1

スペースと改行なしで辞書をjson文字列に変換しようとしています。私はJSONSerialization.jsonObjectを使用しようとしましたが、まだ空白と改行が見えます。文字列の結果は、あなたがオブジェクトにシリアル化されたJSONをデコードしている。このスペースと改行なしで辞書をjson文字列に変換する方法

"data": "{\"requests\":[{\"image\":{\"source\":{\"imageUri\":\"https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png\"}},\"features\":[{\"type\":\"LOGO_DETECTION\",\"maxResults\":1}]}]}" 

マイ変換

var features = [[String: String]]() 
for detection in detections { 
    features.append(["type": imageDetection[detection]!]) 
} 
let content = ["content": base64Image] 
let request = ["image": content, "features": features] as [String : Any] 
let requests = ["requests": [request]] 

let jsonData = try! JSONSerialization.data(withJSONObject: requests, options: .prettyPrinted) 
let decoded = try! JSONSerialization.jsonObject(with: jsonData, options: []) 
print(decoded) 

結果

{ 
    requests =  (
       { 
      features =    (
           { 
        type = "LABEL_DETECTION"; 
       }, 
           { 
        type = "WEB_DETECTION"; 
       }, 
           { 
        type = "TEXT_DETECTION"; 
       } 
      ); 
      image =    { 
       content = "iVBO 
     ........... 
+2

'.prettyPrinted'が原因です – Callam

+0

オプションを削除すると同じ結果が得られます –

答えて

3

のようになります持ってする方法はあります。オブジェクトがコンソールに印刷されると、インデントと等号と括弧の使用が表示されます。

.prettyPrintedオプションを削除し、データを使用して.utf8エンコーディングの文字列を初期化します。

let jsonData = try! JSONSerialization.data(withJSONObject: requests, options: []) 
let decoded = String(data: jsonData!, encoding: .utf8)!