私のサーバーからこのJSONを受け取っています。私の要求は、通常のユースケースとは少し異なります。私の場合、私は@Embedded
を部屋のライブラリから提供しています。ルーム組み込みクラスへの改造を使用したJSONの逆シリアル化
[
{
"id": 105,
"title": "Clear notification",
"message": "Opening the app should automatically clear the notifications",
"klass": "Demo",
"priority": 0,
"timestamp": "2017-09-03T07:20:56.130500Z",
"teacher": "ABC",
"attachments": []
},
{
"id": 104,
"title": "Attachment",
"message": "File upload take 1",
"attachments": [
{
"id": 5,
"name": "Technology List.txt",
"url": "https://cdn.filestackcontent.com/",
"type": "text/plain",
"size": 954
}
]
}
]
POJOの上記のJSONのために。 JSONをFeedWithAttachment
クラスにデシリアライズしています。
public class FeedWithAttachment {
@NotNull @Embedded
public Feed feed;
@Relation(parentColumn = "id", entityColumn = "feedId", entity = Attachment.class)
public List<Attachment> attachments;
}
マイFeedクラス:
data class Feed(
@PrimaryKey @SerializedName("id")
var id: Long = 0,
@SerializedName("title")
var title: String = "",
@SerializedName("message")
var message: String = "",
)
私のアタッチメントクラス:
data class Attachment(
@PrimaryKey @SerializedName("id")
var attachmentId: Int = 0,
var name: String = "",
var url: String = "",
var type: String = "",
var size: Long = 0,
@Transient
var feedId: Long = 0
)
我々はFeed
モデルでList<Attachment
を入れた場合は、予想通り、それは動作します。残念ながら私の要求は、FeedWithAttachment
という別のクラスが必要なものです。
改修:
interface FeedService {
public Call<List<FeedWithAttachment>> getFeeds();
}
問題
私はfeed
がnull
で、attachments
が期待される応答にFeedWithAttachment
を取得しています。
あなたは、このクラスを使うのか?あなたの答えを投稿してください。 –
@MehulKabaria 'FeedWithAttachment'は' feed'が 'null'で、' attachments'は期待どおりです。 –
同じJavaクラスを使用して、サーバーの応答とデータベース構造を表現しようとしているようです。これらのことは完全に独立しています。サーバーは提供されたJSONの性質を変更することができ、データベースのリレーショナル構造(RoomがサポートするSQLite機能の特定のサブセット)に限定されます。 IMHO、将来同じクラスを使う必要がないので、同じクラスを使うのは面倒ではありません。サーバーの応答とデータベース構造をモデル化した別のクラスを用意してください。 – CommonsWare