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

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

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

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

1回答

2184閲覧

JSON文字列をオブジェクトに変換する方法が知りたいです

ColumbiaUchida

総合スコア12

JSON

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2022/08/16 12:15

編集2022/12/26 13:34

こんにちは、お忙しいところ、質問ページを開いていただきありがとうございます!
今回私が挑戦しているのは、SharedPreferenceに保存した文字列をオブジェクトに変換することです。

現在、getStringをすると、

"[{"id": 1, "body": "ごはん"}, {"id": 2, "body": "もねる"}]"

という文字列が返ってくるのですが、これをKotlinで扱えるようにオブジェクトに変換したいと思っています。しかし、方法がわかりません。やりたいこととしては、

kotlin

1data class TagModel( 2 val id: Int, 3 val body: String 4)

こうしたデータクラスが複数入った配列[TagModel(), TagModel()]という形で取得したいと考えています。そのためにはまずは文字列を分解する手段を知るべきでしょうか、Kotlinについて初心者なため、はじめの一歩で躓いてしまっております。

追記:

kotlin

1@Serializable 2class TagModel(val id: Int, val body: String) 3 4val jsonString = """{"id": 1, "body": "あさごはん"}""" 5val tag = Json.decodeFromString<TagModel>(jsonString)

とすることで、Jsonをオブジェクトにすることができました。しかしながら配列を含んだJsonを変換しようとすると、

kotlin

1val jsonString = """[{"id": 1, "body": "あさごはん"}, {"id": 2, "body": "よるごはん"}]""" 2val tag = Json.decodeFromString<TagModel>(jsonString)

Caused by: kotlinx.serialization.json.internal.JsonDecodingException: Expected start of the object '{', but had 'EOF' insteadJSON input: [{"id": 1, "body": "あさごはん"}, {"id": 2, "body": "よるごはん"}]

というエラーで先に進めなくなってしまいました。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2022/08/16 12:24

「Kotlin json デシリアライズ」などをキーワードにググってみてはいかがですか?
jimbe

2022/08/16 13:59 編集

挨拶は不要です。 ついでに SNS では無いので "!" も不要です。 >SharedPreferenceに保存した文字列 はどのようなデータをどうやって保存したのでしょうか。 普通なら保存と読み込みの両方を考えて作ると思うのですが。
guest

回答1

0

ベストアンサー

しかしながら配列を含んだJsonを変換しようとすると、(略)

decodeFromString の返す型を配列なり List なりにする必要があるのでは無いでしょうか。

投稿2022/08/17 04:35

編集2022/12/26 04:34
jimbe

総合スコア12545

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問