java - 以class为参数的Gson.fromJson和以Type为参数的Gson.fromJson有什么区别?

标签 java json gson

我试图解析一个结构如下的 Json 对象:

{
"something@email.com": {
    "data1": {
        "fullName": "Mr X Y",
        "givenName": "X"
    },
    "data2": {
        "age": "70",
        "gender": "Male"
    },
    "data3": [
        {
            "typeId": "xyz",
            "url": "xyz.com"
        }
    ],
    "status": 200,
},
"anotherThing@email.com": {
    "data1": {
        "fullName": "Mr A B",
        "givenName": "A"
    },
    "data2": {
        "age": "20",
        "gender": "Male"
    },
    "data3": [
        {
            "typeId": "abc",
            "url": "abc.com"
        }
    ],
    "status": 200,
}
}

我创建了一个bean TempBean有一个字段Map<String, Person> ,与 Person作为另一个被适当定义来接受 Json 的 bean。

我尝试过:

Gson.fromJson(data, TempBean.class)

但无法解析。也尝试过Map.class并接受了Map<String, Person> ,但无法解析。

但是,当我使用时:

Type dataType = new TypeToken<Map<String, Person>>() {}.getType();

然后,

Map<String, Person> tempMap = Gson.fromJson(data, dataType); 

我可以解析它..!

我想知道这两种方法有什么区别,以及我还应该知道什么才能清楚地了解这一切。

最佳答案

Google的官方解释是here .

关于java - 以class为参数的Gson.fromJson和以Type为参数的Gson.fromJson有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22818973/

相关文章:

android - 改造发布空数据

php 将/tmp/文件转换为$_FILE

android - Kotlin 中带有 val 的 Gson 序列化错误

java - 检查对象是否已更改(保留良好的类设计)

Java异常-第n次尝试返回到 "try"语句 block

python - 尝试从 python 中的 json 响应解析值

java - 在使用海报扩展的 Java REST Web 服务中使用 POST 时出现 415 错误

java - 线程 "main"com.google.gson.JsonSyntaxException : java. lang.NumberFormatException 中出现异常:空字符串

java - 修改我的java swing计算器的图形

java - 如何在Gradle中设置mavenLocal