[英]How does Gson.fromJson(String, Class) work?
考慮以下示例 Json 字符串:
{"Name":"val","FatherName":"val","MotherName":"val"}
我將上面的 Json 轉換為以下 pojo :
public class Info{
private String name;
private String father;
private String mother;
}
我想知道的是,當我執行以下操作時:
Gson.fromJson(jsonLine, Info.class);
json 對象中的鍵如何跟蹤到我的 pojo 中的變量? 如何是關鍵的價值FatherName
存儲在father
的Info.class
?
Gson 正在使用反射( https://android.jlelse.eu/reflections-on-reflection-performance-impact-for-a-json-parser-on-android-d36318c0697c )。 因此示例 json 將無法在您的示例中按預期工作,有幾個選項可以解決此問題
感謝@Aaron
您還可以使用@SerializedName 注釋變量
@SerializedName("father") 私有字符串FatherName;
在 Kotlin 中,有這個類:
import com.google.gson.annotations.SerializedName
data class UsuariosDTO (
@SerializedName("data") var data: List<Usuarios>
)
data class Usuarios(
@SerializedName("uid") var uid: String,
@SerializedName("name") var name: String,
@SerializedName("email") var email: String,
@SerializedName("profile_pic") var profilePic: String,
@SerializedName("post") var post: Post
)
data class Post(
@SerializedName("id") var id: Int,
@SerializedName("date") var date: String,
@SerializedName("pics") var pics: List<String>
)
我可以使用(其中 dataObteined 是 UsuariosDTO 類型):
val json = gson.toJson(dataObtained)
然后像這樣反序列化json:
val offUsuariosDTO = gson.fromJson(json, UsuariosDTO::class.java)
到處尋找后,我發現我的錯誤是 UsuariosDTO.class。 由於 Gson 是一個 Java 庫,因此您必須使用 UsuariosDTO::class.java
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.