teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

補足情報の追加

2021/05/03 11:06

投稿

_kei
_kei

スコア26

title CHANGED
File without changes
body CHANGED
@@ -73,4 +73,26 @@
73
73
  }
74
74
  ```
75
75
 
76
- また、Converter関数の命名についてですが、to, fromを使ってどのように命名するのが適切でしょうか?
76
+ また、Converter関数の命名についてですが、to, fromを使ってどのように命名するのが適切でしょうか?
77
+
78
+ ##### 補足情報
79
+ データをJsonで保存するために、Gsonを使用して、
80
+ ```kotlin
81
+ class Converters {
82
+
83
+ companion object {
84
+
85
+ @JvmStatic
86
+ @TypeConverter
87
+ fun fromUser(user: User) = Gson().toJson(user)
88
+
89
+ @JvmStatic
90
+ @TypeConverter
91
+ fun toUser(user: String?) =
92
+ Gson().fromJson(user, User::class.java)
93
+ ```
94
+ としてみましたが、
95
+ ```
96
+ com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path typeconverter
97
+ ```
98
+ が出力され、思うように動作しませんでした。

1

説明の補足

2021/05/03 11:06

投稿

_kei
_kei

スコア26

title CHANGED
File without changes
body CHANGED
@@ -9,70 +9,65 @@
9
9
  data class Item(
10
10
  @PrimaryKey(autoGenerate = true)
11
11
  val id: Int? = null,
12
- val curator: Curator,
12
+ val user: User,
13
- val thumbnails: Thumbnails,
13
+ val logos: Logos,
14
14
  val title: String,
15
15
  val url: String,
16
- val vod: Vod? = null
16
+ val video: Video? = null
17
17
  ) : Serializable
18
18
 
19
- data class Curator(
19
+ data class User(
20
- val id: String? = null,
21
20
  val logo: Any? = null,
22
21
  val name: String? = null
23
22
  )
24
23
 
25
- data class Thumbnails(
24
+ data class Logs(
26
25
  val medium: String? = null,
27
26
  val small: String? = null,
28
- val tiny: String? = null
29
27
  )
30
- data class Vod(
28
+ data class Video(
31
29
  val id: String? = null,
32
30
  val url: String? = null
33
31
  )
34
32
  ```
35
33
 
36
- 私は以下のようにTypeConverterを記述しましたが、うまく動作しません。どう書けばいいのか教えていただきたいです。
34
+ どう書けばいいのか教えていただきたいです。
35
+
37
36
  ```kotlin
38
37
  class Converters {
39
38
  @TypeConverter
40
- fun fromBroadcaster(broadcaster: Broadcaster): String? {
39
+ fun fromUser(user: User): String? {
41
- return broadcaster.name
40
+ // 下の行をどう書けばいいか分かりません
41
+ return
42
42
  }
43
43
 
44
44
  @TypeConverter
45
- fun toBroadcaster(name: String): Broadcaster {
45
+ fun toUser(name: String): User {
46
- return Broadcaster(name = name)
46
+ // 下の行をどう書けばいいか分かりません
47
+ return
47
48
  }
48
49
 
49
50
  @TypeConverter
50
- fun fromCurator(curator: Curator): String? {
51
+ fun fromLogos(logos: Logos): String? {
52
+ // 下の行をどう書けばいいか分かりません
51
- return curator.name
53
+ return
52
54
  }
53
55
 
54
56
  @TypeConverter
55
- fun toCurator(name: String): Curator {
57
+ fun toLogos(name: String): Logos {
56
- return Curator(name = name)
58
+ // 下の行をどう書けばいいか分かりません
59
+ return
57
60
  }
58
61
 
59
62
  @TypeConverter
60
- fun fromThumbnails(thumbnails: Thumbnails): String? {
63
+ fun fromVideo(video: Vod?): String? {
61
- return thumbnails.medium
64
+ // 下の行をどう書けばいいか分かりません
65
+ return
62
66
  }
63
67
 
64
68
  @TypeConverter
65
- fun toThumbnails(name: String): Thumbnails {
66
- return Thumbnails()
67
- }
68
-
69
- @TypeConverter
70
- fun fromVod(vod: Vod?): String? {
71
- return vod?.id
72
- }
73
-
74
- @TypeConverter
75
- fun toVod(url: String?): Vod {
69
+ fun toVideo(url: String?): Video {
70
+ // 下の行をどう書けばいいか分かりません
76
71
  return Vod()
77
72
  }
78
73
  }