从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,
。感谢您的输入。