gpt4 book ai didi

java - 当元素可以是不同类型以供使用时,如何创建 JSON 数据结构

转载 作者:行者123 更新时间:2023-11-30 06:19:13 24 4
gpt4 key购买 nike

在此question我们看到子元素元素可以是附加数据项的数组或 boolean 值

我使用 Java 创建数据,存储在 Data 类中,然后使用 Google Gson 转换为 Json。但是因为 child 可以是两个不同的东西,所以我通过在数据中使用变量 kids 来表示这一点,当我需要存储为 boolean 值时,我会使用该变量。然后对生成的 json 进行字符串替换,将其转换为子元素。

但是这个黑客不是很令人满意并且有问题(即,如果他们有内容为“ child ”的真实数据),那么用不同的数据类型表示数据的正确方法是什么。

public class Data
{
private String id;
private String text;
private String icon;
private State state;
private boolean kids;

private List<Data> children = null;

public String getId()
{
return id;
}

public void setId(String id)
{
this.id = id;
}

public String getText()
{
return text;
}

public void setText(String text)
{
this.text = text;
}

public String getIcon()
{
return icon;
}

public void setIcon(String icon)
{
this.icon = icon;
}

public List<Data> getChildren()
{
return children;
}

public void setChildren(List<Data> children)
{
this.children = children;
}

public State getState()
{
return state;
}

public void setState(State state)
{
this.state = state;
}

public boolean getKids()
{
return kids;
}

public void setKids(boolean kids)
{
this.kids = kids;
}
}

public static String createFolderJsonData()
{
CreateFolderTree cft = new CreateFolderTree(null);
String treeData = cft.start(1).replace("kids", "children");
return treeData;
}

最佳答案

假设你知道 child 是什么类型,你可以这样解决

public class Data<T>{

private T children = null;

public T getChildren(){
return children;
}

public void setChildren(T children){
this.children = children;
}
}

public class DataRunner {
public static void main(String[] args){
Data<List<Data>> data = new Data<>();

Data<List<Data>> subDataOne = new Data<>();
subDataOne.setChildren(new ArrayList<>());

Data<Boolean> subDataTwo = new Data<>();
subDataTwo.setChildren(true);

List<Data> listData = new ArrayList<>();

listData.add(subDataOne);
listData.add(subDataTwo);

data.setChildren(listData);

// {"children":[{"children":[]},{"children":true}]}
System.out.println(new Gson().toJson(data));
}
}

现在它打印了正确的内容,请注意 ArrayList 并不关心 Data 具有什么泛型类型

关于java - 当元素可以是不同类型以供使用时,如何创建 JSON 数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48541440/

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