从Kotlin对象列表创建JSONObject集合
我有一个房间数据库,可以从中获取从Kotlin对象列表创建JSONObject集合,json,kotlin,android-room,Json,Kotlin,Android Room,我有一个房间数据库,可以从中获取列表,然后我必须将其转换为集合,并返回它。我怎样才能有效地做到这一点 以下是LearningEvent课程: @Entity(tableName = "learningEvents") data class LearningEvent( @ColumnInfo(name = "learningeventid") @PrimaryKey(autoGenerate = true) var id: Int?
列表
,然后我必须将其转换为集合
,并返回它。我怎样才能有效地做到这一点
以下是LearningEvent
课程:
@Entity(tableName = "learningEvents")
data class LearningEvent(
@ColumnInfo(name = "learningeventid")
@PrimaryKey(autoGenerate = true)
var id: Int? = null,
var sessionId: Long,
var time: Float,
var eventType: String,
var description: String,
var feedback: String
)
这是道:
@Query("SELECT * FROM learningEvents WHERE sessionId = :sessionId")
suspend fun getAllLearningEvents(sessionId: Long?): List<LearningEvent>
@Query(“从learningEvents中选择*,其中sessionId=:sessionId”)
suspend fun getAllLearningEvents(会话ID:长?):列表
下面是getEvents()函数的非工作/非构建代码:
override suspend fun getEvents(): Collection<JSONObject> =
withContext(Dispatchers.IO) {
Log.d("\ngetEvents(eventType)", currentSessionId.toString())
if (currentSessionId === null) {
throw Exception("Current session Id is null; Session cannot be retrieved.")
}
var gson = Gson();
// Return JSON object collection of table rows.
var learningEvents = db.learningEventDao().getAllLearningEvents(currentSessionId);
var returnCollection = emptyList<JSONObject>();
learningEvents.forEach{element ->
var singleObject = gson.toJsonTree(element);
returnCollection += singleObject;
}
return@withContext returnCollection;
}
覆盖挂起事件():集合=
withContext(Dispatchers.IO){
Log.d(“\ngetEvents(eventType)”,currentSessionId.toString()
if(currentSessionId==null){
抛出异常(“当前会话Id为null;无法检索会话。”)
}
var gson=gson();
//返回表行的JSON对象集合。
var learningEvents=db.learningEventDao().getAllLearningEvents(currentSessionId);
var returnCollection=emptyList();
learningEvents.forEach{element->
var singleObject=gson.toJsonTree(元素);
returnCollection+=singleObject;
}
return@withContext回收;
}
在我看来,您可以使用.toJson
将LearningEvent转换为JSONObject。下面是示例代码:
var learningEvents = db.learningEventDao().getAllLearningEvents(currentSessionId);
var returnCollection = emptyList<JSONObject>();
learningEvents.forEach{ element ->
val singleObject = gson.toJson(element);
returnCollection += JSONObject(singleObject);
}
var learningEvents=db.learningEventDao().getAllLearningEvents(currentSessionId);
var returnCollection=emptyList();
learningEvents.forEach{element->
val singleObject=gson.toJson(元素);
returnCollection+=JSONObject(singleObject);
}
最后,我使用了JSONObject(mapOf(“session”)到element.sessionId,
。感谢您的输入。