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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

1回答

2418閲覧

NSString型のデータをJSONに変換する

skomatsu

総合スコア12

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/08/23 14:26

編集2016/08/23 14:52

Swift2でNSString型の以下のようなデータをJSONに変換するメソッドなどは無いでしょうか?できれば外部のライブラリを使わずに実現したいです。よろしくお願いします。また、できればデコードもしたいです。

"[{"ID":"1","Name":"\u5fdc\u7528\u6570\u5b66"},{"ID":"2","Name":"\u78ba\u7387\u7d71\u8a08"},{"ID":"3","Name":"\u5fdc\u7528\u7269\u7406II"},{"ID":"4","Name":"\u96fb\u78c1\u6c17\u5b66"},{"ID":"5","Name":"\u60c5\u5831\u5de5\u5b66\u30bb\u30df\u30ca\u30fc"},{"ID":"6","Name":"\u6570\u5024\u89e3\u6790"},{"ID":"7","Name":"\u901a\u4fe1\u7406\u8ad6"},{"ID":"8","Name":"\u60c5\u5831\u69cb\u9020\u8ad6"},{"ID":"9","Name":"\uff7c\uff7d\uff83\uff91\uff8c\uff9f\uff9b\uff78\uff9e\uff97\uff90\uff9d\uff78\uff9e"},{"ID":"10","Name":"\u60c5\u5831\u30b7\u30b9\u30c6\u30e0I"},{"ID":"11","Name":"\u901a\u4fe1\u30b7\u30b9\u30c6\u30e0I"},{"ID":"12","Name":"\u77e5\u8b58\u5de5\u5b66I"},{"ID":"13","Name":"\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30cd\u30c3\u30c8\u30ef\u30fc\u30afI"},{"ID":"14","Name":"\u4fdd\u5065\u4f53\u80b2IV"},{"ID":"15","Name":"\u6587\u5b66\u7279\u8ad6"},{"ID":"16","Name":"\u6570\u5b66\u6982\u8ad6I"},{"ID":"17","Name":"\u6570\u5b66\u6982\u8ad6II"},{"ID":"18","Name":"\u82f1\u8a9e\u7279\u8ad6I"},{"ID":"19","Name":"\u4e2d\u56fd\u8a9eI"},{"ID":"20","Name":"\u60c5\u5831\u5de5\u5b66\u5b9f\u9a13I"}]\n"

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

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

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

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

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

guest

回答1

0

ベストアンサー

NSJSONSerializationのメソッド、NSJSONSerialization.JSONObjectWithData(_, options:)を用いて、JSON文字列をDictionaryまたは配列のオブジェクトに変換することができます。

JSONObjectWithData(_, options:)の引数はNSDataを渡す必要がありますので、まずNSStringNSDataに変換します。String.dataUsingEncoding()を使用します。

その次に、JSONObjectWithData(_, options:)を用いてJSONオブジェクトに変換します。

swift

1let s = "[{\"ID\":\"1\",\"Name\":\"\\u5fdc\\u7528\\u6570\\u5b66\"},{\"ID\":\"2\",\"Name\":\"\\u78ba\\u7387\\u7d71\\u8a08\"},{\"ID\":\"3\",\"Name\":\"\\u5fdc\\u7528\\u7269\\u7406II\"},{\"ID\":\"4\",\"Name\":\"\\u96fb\\u78c1\\u6c17\\u5b66\"},{\"ID\":\"5\",\"Name\":\"\\u60c5\\u5831\\u5de5\\u5b66\\u30bb\\u30df\\u30ca\\u30fc\"},{\"ID\":\"6\",\"Name\":\"\\u6570\\u5024\\u89e3\\u6790\"},{\"ID\":\"7\",\"Name\":\"\\u901a\\u4fe1\\u7406\\u8ad6\"},{\"ID\":\"8\",\"Name\":\"\\u60c5\\u5831\\u69cb\\u9020\\u8ad6\"},{\"ID\":\"9\",\"Name\":\"\\uff7c\\uff7d\\uff83\\uff91\\uff8c\\uff9f\\uff9b\\uff78\\uff9e\\uff97\\uff90\\uff9d\\uff78\\uff9e\"},{\"ID\":\"10\",\"Name\":\"\\u60c5\\u5831\\u30b7\\u30b9\\u30c6\\u30e0I\"},{\"ID\":\"11\",\"Name\":\"\\u901a\\u4fe1\\u30b7\\u30b9\\u30c6\\u30e0I\"},{\"ID\":\"12\",\"Name\":\"\\u77e5\\u8b58\\u5de5\\u5b66I\"},{\"ID\":\"13\",\"Name\":\"\\u30b3\\u30f3\\u30d4\\u30e5\\u30fc\\u30bf\\u30cd\\u30c3\\u30c8\\u30ef\\u30fc\\u30afI\"},{\"ID\":\"14\",\"Name\":\"\\u4fdd\\u5065\\u4f53\\u80b2IV\"},{\"ID\":\"15\",\"Name\":\"\\u6587\\u5b66\\u7279\\u8ad6\"},{\"ID\":\"16\",\"Name\":\"\\u6570\\u5b66\\u6982\\u8ad6I\"},{\"ID\":\"17\",\"Name\":\"\\u6570\\u5b66\\u6982\\u8ad6II\"},{\"ID\":\"18\",\"Name\":\"\\u82f1\\u8a9e\\u7279\\u8ad6I\"},{\"ID\":\"19\",\"Name\":\"\\u4e2d\\u56fd\\u8a9eI\"},{\"ID\":\"20\",\"Name\":\"\\u60c5\\u5831\\u5de5\\u5b66\\u5b9f\\u9a13I\"}]\n" 2 3if let data = s.dataUsingEncoding(NSUTF8StringEncoding) { 4 do { 5 print(data.length) 6 let JSONObject = try NSJSONSerialization.JSONObjectWithData(data, options: []) 7 } catch let error { 8 print(error) 9 } 10} else { 11 print("Invalid string") 12}

投稿2016/08/23 15:48

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

skomatsu

2016/08/23 23:50

ご丁寧な解説、ありがとうございます。解決いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問