当前位置: 首页 > 知识库问答 >
问题:

Google GSON:将JSON数据反序列化到Java

汪信鸥
2023-03-14

我们使用Google GSON反序列化JSON数据到Java对象。请参阅下面的示例JSON数据和相应的POJO类。我能够反序列化“name”和“phoneNumber”字段。但对于“Departments”字段,我看到NULL。您能帮助我如何反序列化“Departments”字段吗?

我的JSON:

{
  "name": "customer",
  "phoneNumber": "000000000",
  "deparments": "xyz,abc,wyz,djkf, iii"
}

类:

public class CustomerInfo
{
    private String name;
    private String phoneNumber;
    private String deparments;

    // getters and setters
}

customerDeserializer.java:

...
Gson gson = new Gson();
CustomerInfo customerInfo = gson.fromJson(reader, CustomerInfo.class);

共有2个答案

丰辰沛
2023-03-14

复制并粘贴下面的代码

public class CustomerInfo {

    @SerializedName("name")
    private String name;
    @SerializedName("phoneNumber")
    private String phoneNumber;
    @SerializedName("deparments")
    private String deparments;

    @Override
    public String toString() {
        return new Gson().toJson(this, CustomerInfo.class);
    }
}

并像下面的代码一样反序列化它

CustomerInfo customerInfo = new Gson().fromJson(jsonString, CustomerInfo.class);

希望这对你有帮助。

聂溪叠
2023-03-14

重新检查您的JSON源代码。我想你只是有一些对象的关键:部门,而不是离开。

无论如何,下一段代码对我有效:

public class CustomerInfo
{
    private String name;
    private String phoneNumber;
    private String deparments;

    // getters and setters
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    public String getPhoneNumber(){
        return phoneNumber;
    }
    public void setPhoneNumber(String phoneNumber){
        this.phoneNumber = phoneNumber;
    }
    public String getDeparments() {
        return deparments;
    }
    public void setDeparments(String deparments) {
        this.deparments = deparments;
    }

    @Override
    public String toString() {
        return "CustomerInfo{" +
                "name='" + name + '\'' +
                ", phoneNumber='" + phoneNumber + '\'' +
                ", deparments='" + deparments + '\'' +
                '}';
    }
}

@Test
public void desJson(){
    String json = "{\n" +
            "  \"name\": \"customer\",\n" +
            "  \"phoneNumber\": \"000000000\",\n" +
            "  \"deparments\": \"xyz,abc,wyz,djkf, iii\"\n" +
            "}";
    Gson gson = new Gson();
    CustomerInfo customerInfo = gson.fromJson(json, CustomerInfo.class);
    System.out.println(customerInfo);
}

输出为:

CustomerInfo{name='customer',PhoneNumber='000000000',Departments='XYZ,abc,wyz,djkf,III'}

 类似资料:
  • 问题内容: 我正在使用大猩猩 websocket,并且正在计划使用json进行序列化/反序列化。 假设我有这样的结构来接收传入的消息: 和 大猩猩提供接收传入的消息。传入的消息可以是Foo或Bar,但是我不能使用和收听其他消息,这很混乱。我想要像javascript 这样的东西。如果接收到Foo,则如何处理传入消息,然后将其存储到结构中;如果接收到Bar,则将其存储到结构中? 我正在解决方案正在使

  • 我是一个新手,正在尝试编写一个简单的应用程序,从大学校中提取一些学校数据。组织。json数据如下所示: 我的结构如下所示: 当我运行代码时,我得到“json:无法将对象解组为[]main.SchoolStruct类型的Go值” 我正在使用gopencils库来提出我的请求,并成功地将其用于非常简单的请求。你知道我可能做错了什么吗?

  • 我很难将JSON反序列化到下面示例中实现基本接口的一些类ChildA、ChildB等。 异常是:com.fasterxml.jackson.databind.JsonMappingExc0019:意外令牌(END_OBJECT),预期FIELD_NAME:缺少包含类型id的属性type(对于类Basic) 预期的JSON如下所示: 没有在所有类型对象中显示的属性,因此它们完全不同。但正如您在rea

  • 我需要将下面两个foramt反序列化为单个代码中的 嵌套异常是org.springframework.http.converter.httpmessageNotreadableException:JSON解析错误:无法反序列化字符串类型的值“2020-04-23t10:51:24.238+01:00”:com.fasterxml.jackson.databind.exc.invalidformat

  • 问题内容: 我很好奇序列化和反序列化的方式。我使用关键字“ json”和“ tuple”进行搜索,但找不到所需的内容。 问题答案: 我通过和Json.net进行测试,测试代码如下。结果显示可序列化和可反序列化。因此,我可以在应用程序中使用它们。 测试代码 注释 在将序列化到字符串{“项目1”:“一”,“项目2”:“嘻嘻”,“项目3”:真正},并且它可以被反序列化回类型。

  • 我有一个简单的问题,假设我有这个json 以这种方式映射: 我想知道是否可以通过使用一些自定义setter/注释或其他东西在内部对象中保存一个外部字段: PS:由于json的复杂性,使用自定义反序列化是我最后的选择