考虑以下示例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
的{{1}}中?
答案 0 :(得分:0)
Gson正在使用反射(https://android.jlelse.eu/reflections-on-reflection-performance-impact-for-a-json-parser-on-android-d36318c0697c)。因此,示例json无法如您的示例中预期的那样工作,有两种方法可以解决此问题
感谢@Aaron
您还可以使用@SerializedName注释变量
@SerializedName(“父亲”) 私有字符串FatherName;
答案 1 :(得分:0)
在 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