質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.39%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

1109閲覧

SwiftでJSON形式のデータを辞書型にパースしたい

keraraa

総合スコア0

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2021/12/24 02:27

編集2021/12/24 02:32

前提・実現したいこと

SwiftのJSON Serializationを使って、JSON形式のデータを[String: Any]型の辞書に変換したいです。

発生している問題・エラーメッセージ

  1. APIから取得したデータを解析させたいのですが、日本語のみUnicodeのコードポイントで表示されてしまいます。
  2. データの一部の書式が変更されてしまいます。

例:"address1" : "三重県""addresss1" = "\U4e09\U91cd\U770c";

該当のソースコード

Swift

1 //jsonDataにAPIからのレスポンス(data)を渡す 2 func jsonDataToDictionary(jsonData: Data){ 3 do{ 4 let dic = try JSONSerialization.jsonObject(with: jsonData, options: []) as! [String: Any] 5 print(dic) 6 }catch{ 7 print(error.localizedDescription) 8 } 9 }

console

1//コンソールの出力 2["results": <__NSArrayI 0x600000dcc810>( 3{ 4 address1 = "\U4e09\U91cd\U770c"; 5 address2 = "\U591a\U6c17\U90e1\U5927\U53f0\U753a"; 6 address3 = "\U5ddd\U5408"; 7 kana1 = "\Uff90\Uff74\Uff79\Uff9d"; 8 kana2 = "\Uff80\Uff77\Uff78\Uff9e\Uff9d\Uff75\Uff75\Uff80\Uff9e\Uff72\Uff81\Uff6e\Uff73"; 9 kana3 = "\Uff76\Uff9c\Uff72"; 10 prefcode = 24; 11 zipcode = 5192412; 12}, 13{ 14 address1 = "\U4e09\U91cd\U770c"; 15 address2 = "\U591a\U6c17\U90e1\U5927\U53f0\U753a"; 16 address3 = "\U6edd\U5e83"; 17 kana1 = "\Uff90\Uff74\Uff79\Uff9d"; 18 kana2 = "\Uff80\Uff77\Uff78\Uff9e\Uff9d\Uff75\Uff75\Uff80\Uff9e\Uff72\Uff81\Uff6e\Uff73"; 19 kana3 = "\Uff80\Uff77\Uff8b\Uff9b"; 20 prefcode = 24; 21 zipcode = 5192412; 22} 23) 24, "message": <null>, "status": 200]

sample

1//APIのレスポンスサンプル 2{ 3 "message": null, 4 "results": [ 5 { 6 "address1": "北海道", 7 "address2": "美唄市", 8 "address3": "上美唄町協和", 9 "kana1": "ホッカイドウ", 10 "kana2": "ビバイシ", 11 "kana3": "カミビバイチョウキョウワ", 12 "prefcode": "1", 13 "zipcode": "0790177" 14 }, 15 { 16 "address1": "北海道", 17 "address2": "美唄市", 18 "address3": "上美唄町南", 19 "kana1": "ホッカイドウ", 20 "kana2": "ビバイシ", 21 "kana3": "カミビバイチョウミナミ", 22 "prefcode": "1", 23 "zipcode": "0790177" 24 } 25 ], 26 "status": 200 27}

試したこと

構造体を事前に作成し、JSONDecoderを使って解析する
日本語含め問題なく解析できましたが、後々、JsonDataToDictionary() を汎用的に使用したいという目標が達成できませんでした(マップ先の構造体を引数で指定したかったが、上手くできず)。

補足情報(FW/ツールのバージョンなど)

使用しているAPIはこちらです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

コンソールでは日本語の出力ができません。
コンソールの仕様なのであきらめてください。

投稿2021/12/24 05:13

MasakiHori

総合スコア3391

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.39%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問