gpt4 book ai didi

java - 反序列化 json,将子类对象提升到顶层而不是嵌套类

转载 作者:行者123 更新时间:2023-12-02 09:28:52 26 4
gpt4 key购买 nike

我正在反序列化来自 api 的 json 响应,我有一个工作代码,但我唯一关心的是 Object 类中的元素,如何完全消除 Object 类并直接从 ListUsers 类返回元素?

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

import java.util.List;

public class ListUsers{

@SerializedName("meta")
@Expose
private Meta meta;
@SerializedName("objects")
@Expose
private List<Objects> objects = null;

public Meta getMeta() {
return meta;
}

public void setMeta(Meta meta) {
this.meta = meta;
}

public List<Objects> getObjects() {
return objects;
}

public void setObjects(List<Objects> objects) {
this.objects = objects;
}

private class Meta {
@SerializedName("limit")
@Expose
private int limit;
@SerializedName("offset")
@Expose
private int offset;
@SerializedName("total_count")
@Expose
private int totalCount;

public int getLimit() {
return limit;
}

public void setLimit(int limit) {
this.limit = limit;
}

public int getOffset() {
return offset;
}

public void setOffset(int offset) {
this.offset = offset;
}

public int getTotalCount() {
return totalCount;
}

public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Meta)) return false;
Meta meta = (Meta) o;
return getLimit() == meta.getLimit() &&
getOffset() == meta.getOffset() &&
getTotalCount() == meta.getTotalCount();
}

@Override
public int hashCode() {
return java.util.Objects.hash(getLimit(), getOffset(), getTotalCount());
}

@Override
public String toString() {
return "Meta{" +
"limit=" + limit +
", offset=" + offset +
", totalCount=" + totalCount +
'}';
}
}

private class Objects {
@SerializedName("address_one")
@Expose
public String addressOne;
@SerializedName("address_three")
@Expose
public String addressThree;
@SerializedName("address_two")
@Expose
public String addressTwo;
@SerializedName("country_code")
@Expose
public String countryCode;
@SerializedName("cs_domain_id")
@Expose


public String getAddressOne() {
return addressOne;
}

public void setAddressOne(String addressOne) {
this.addressOne = addressOne;
}

public String getAddressThree() {
return addressThree;
}

public void setAddressThree(String addressThree) {
this.addressThree = addressThree;
}

public String getAddressTwo() {
return addressTwo;
}

public void setAddressTwo(String addressTwo) {
this.addressTwo = addressTwo;
}

public String getCountryCode() {
return countryCode;
}

public void setCountryCode(String countryCode) {
this.countryCode = countryCode;
}
}
}

最佳答案

写一个Adapter (this is a wikipedia link) .

  1. 创建一个类层次结构来表示 JSON。成功,这是您的示例来源。
  2. 创建一个包装 JSON 表示类的适配器类。这会暴露 blam0-blah 的东西(在您的情况下,名称很好的 Objects 列表)是一些有趣且富有创意的方式(也许是 getAddressLine1 方法等等)。

取决于适配器的使用方式,您可能会解析 List<Objects>进入Map<Objects>为了更方便使用。

关于java - 反序列化 json,将子类对象提升到顶层而不是嵌套类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58133096/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com