如何在 android 中正确建模 JSON 地图
How do you properly model a JSON map in android
我正在尝试将地图从 Firestore 传递到数据中 class 但我得到的是 null 而不是数据
这是访问我的数据的方式:
firestoreDb = FirebaseFirestore.getInstance()
val postsRef = firestoreDb
.collection("posts")
.limit(20)
.orderBy("creation_time_ms", Query.Direction.DESCENDING)
.orderBy("date", Query.Direction.DESCENDING)
postsRef.addSnapshotListener { snapshot, exception ->
if (exception != null || snapshot == null) {
Log.e(TAG,"Exception when querying post", exception )
return@addSnapshotListener
}
val postList = snapshot.toObjects(HousePost::class.java)
for (post in postList) {
Log.i(TAG, "Posts $post")
}
}
我的数据模型
data class HousePost (
@get:PropertyName("image_url") @set:PropertyName("image_url") var postImage: String = "",
var rent: String = "",
var description: String = "",
@get:PropertyName("creation_time_ms") @set:PropertyName("creation_time_ms") var creationTimeMs: Long = 0L,
var location: String = "",
@get:PropertyName("post_id") @set:PropertyName("post_id")var postId: String? = "",
var rooms: String = "",
var caption: String = "",
var date: String = "",
var owner: Owner? = null
)
我的主人模型class
class Owner(
var uid: String = "",
var username: String = "",
var email: String = "",
@get:PropertyName("profile_image") @set:PropertyName("profile_image") var profileImage: String = "",
@get:PropertyName("user_type") @set:PropertyName("user_type")var usertype: String = "owner"
)
这是我的 firestore data 我知道有些字段是空字符串,但不应输出 null。
这是 logcat
的结果
2022-05-03 11:42:12.313 6581-6581/com.example.moveapplication I/MainActivity: Posts HousePost(postImage=https://firebasestorage.googleapis.com/v0/b/moveapplicationdb.appspot.com/o/Post%20Pictures%2Fian-dooley-_-JR5TxKNSo-unsplash.jpg?alt=media&token=6721ec57-7602-41ee-b7cd-b8b1838b27fc, rent=15000, description=Along Ngong road we have a studio room for you to rent. Located in a moder =n area with nice infrastrucure, creationTimeMs=1651561930185, location=Lenana, postId=, rooms=studio room, caption=studio room along Ngong road, date=03/05/2022, owner=null)
我的 index 来自 firestore
查看您的 class 定义,一切看起来都很好。您正在使用正确的注释。但是,当您使用以下查询时:
val postsRef = firestoreDb
.collection("posts")
.limit(20)
您需要知道您必须创建一个 index. It can be manually created inside the Firebase Console 或者如果您使用的是 Android Studio,您会在 logcat 中找到一条消息,听起来像这个:
FAILED_PRECONDITION: The query requires an index. You can create it here: ...
只需单击 link 或将 URL 复制并粘贴到网络浏览器中,系统就会自动为您创建索引。
我正在尝试将地图从 Firestore 传递到数据中 class 但我得到的是 null 而不是数据
这是访问我的数据的方式:
firestoreDb = FirebaseFirestore.getInstance()
val postsRef = firestoreDb
.collection("posts")
.limit(20)
.orderBy("creation_time_ms", Query.Direction.DESCENDING)
.orderBy("date", Query.Direction.DESCENDING)
postsRef.addSnapshotListener { snapshot, exception ->
if (exception != null || snapshot == null) {
Log.e(TAG,"Exception when querying post", exception )
return@addSnapshotListener
}
val postList = snapshot.toObjects(HousePost::class.java)
for (post in postList) {
Log.i(TAG, "Posts $post")
}
}
我的数据模型
data class HousePost (
@get:PropertyName("image_url") @set:PropertyName("image_url") var postImage: String = "",
var rent: String = "",
var description: String = "",
@get:PropertyName("creation_time_ms") @set:PropertyName("creation_time_ms") var creationTimeMs: Long = 0L,
var location: String = "",
@get:PropertyName("post_id") @set:PropertyName("post_id")var postId: String? = "",
var rooms: String = "",
var caption: String = "",
var date: String = "",
var owner: Owner? = null
)
我的主人模型class
class Owner(
var uid: String = "",
var username: String = "",
var email: String = "",
@get:PropertyName("profile_image") @set:PropertyName("profile_image") var profileImage: String = "",
@get:PropertyName("user_type") @set:PropertyName("user_type")var usertype: String = "owner"
)
这是我的 firestore data 我知道有些字段是空字符串,但不应输出 null。 这是 logcat
的结果2022-05-03 11:42:12.313 6581-6581/com.example.moveapplication I/MainActivity: Posts HousePost(postImage=https://firebasestorage.googleapis.com/v0/b/moveapplicationdb.appspot.com/o/Post%20Pictures%2Fian-dooley-_-JR5TxKNSo-unsplash.jpg?alt=media&token=6721ec57-7602-41ee-b7cd-b8b1838b27fc, rent=15000, description=Along Ngong road we have a studio room for you to rent. Located in a moder =n area with nice infrastrucure, creationTimeMs=1651561930185, location=Lenana, postId=, rooms=studio room, caption=studio room along Ngong road, date=03/05/2022, owner=null)
我的 index 来自 firestore
查看您的 class 定义,一切看起来都很好。您正在使用正确的注释。但是,当您使用以下查询时:
val postsRef = firestoreDb
.collection("posts")
.limit(20)
您需要知道您必须创建一个 index. It can be manually created inside the Firebase Console 或者如果您使用的是 Android Studio,您会在 logcat 中找到一条消息,听起来像这个:
FAILED_PRECONDITION: The query requires an index. You can create it here: ...
只需单击 link 或将 URL 复制并粘贴到网络浏览器中,系统就会自动为您创建索引。