gpt4 book ai didi

使用 Gson 将 Java 转为 Json

转载 作者:太空宇宙 更新时间:2023-11-04 06:27:09 25 4
gpt4 key购买 nike

我正在使用 gson 将 Java 对象转换为 Json,并按照下面的示例进行操作。

http://www.studytrails.com/java/json/java-google-json-java-to-json.jsp

我不明白的是如何创建多个列和行条目。所以我修改了我的项目的示例,以下是我的代码。

列的数据集类:

public class ColsDataset {

private String id;
private String label;
private String pattern;
private String type;

public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getPattern() {
return pattern;
}
public void setPattern(String pattern) {
this.pattern = pattern;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}

}

必应类

public class Bing {

private ColsDataset[] cols;
private RowsDataset[] rows;



public void setRowsDataset(RowsDataset[] dataset) {
this.rows = dataset;
}

public RowsDataset[] getRowsDataset() {
return rows;
}

public void setColsDataset(ColsDataset[] dataset) {
this.cols = dataset;
}

public ColsDataset[] getColsDataset() {
return cols;
}
}

主类:

import com.google.gson.Gson;

public class test {

public static void main(String[] args) {

ColsDataset cols1 = new ColsDataset();
cols1.setId("");
cols1.setLabel("Impressions");
cols1.setPattern("");
cols1.setType("number");

ColsDataset cols2 = new ColsDataset();
cols2.setId("");
cols2.setLabel("Spend");
cols2.setPattern("");
cols2.setType("number");


RowsDataset rows = new RowsDataset();
//add row data

Bing bing = new Bing();
bing.setColsDataset(new ColsDataset[] {cols1});


Gson gson = new Gson();

System.out.println(gson.toJson(bing));
}


}

如您所见,我将 col1 数据作为数据集对象传递,但不确定如何传递 cols2 数据。我知道我正在为 col2 创建一个新对象,但我可能不必这样做。

以下是我现在的输出:

{"cols":[{"id":"","label":"Impressions","pattern":"","type":"number"}]}

期望的输出:

{"cols":[{"id":"","label":"Impressions","pattern":"","type":"number"},{"id":"","label":"Spend","pattern":"","type":"number"}]}

感谢您提前提供的帮助。

最佳答案

将对象数组转换为列表。这应该适用于将数据编码为 JSON 并将其解码回 Java 字节码。

看看本教程:"How To Convert Java Object To / From JSON (Gson)"来自Mkyong.com

必应

import java.util.List;

public class Bing {
private List<ColsDataset> cols;
private List<RowsDataset> rows;

public Bing() { }

public void setColsDataset(List<ColsDataset> dataset) {
this.cols = dataset;
}

public List<ColsDataset> getColsDataset() {
return cols;
}

public void setRowsDataset(List<RowsDataset> dataset) {
this.rows = dataset;
}

public List<RowsDataset> getRowsDataset() {
return rows;
}
}

将第二个 ColsDataset 对象添加到同一列表有什么问题?

bing.setColsDataset(Arrays.asList(cols1, cols2));

输出是您所期望的:

{"cols":[{"id":"","label":"Impressions","pattern":"","type":"number"},{"id":"","label":"Spend","pattern":"","type":"number"}]}

测试

import java.util.Arrays;

import com.google.gson.Gson;

public class Test {
public static void main(String[] args) {
ColsDataset cols1 = new ColsDataset();
cols1.setId("");
cols1.setLabel("Impressions");
cols1.setPattern("");
cols1.setType("number");

ColsDataset cols2 = new ColsDataset();
cols2.setId("");
cols2.setLabel("Spend");
cols2.setPattern("");
cols2.setType("number");

RowsDataset rows = new RowsDataset();

//TODO Add row data.

Bing bing = new Bing();
bing.setColsDataset(Arrays.asList(cols1, cols2));

Gson gson = new Gson();

System.out.println(gson.toJson(bing));
}
}
<小时/>

扩展

关于您下面的问题。

{
"rows": [{
"c": [{
"v": "Mushrooms"
}, {
"v": 1
}]
}, {
"c": [{
"v": "Onions"
}, {
"v": 1
}]
}, {
"c": [{
"v": "Olives"
}, {
"v": 1
}]
}, {
"c": [{
"v": "Zucchini"
}, {
"v": 1
}]
}, {
"c": [{
"v": "Pepperoni"
}, {
"v": 1
}]
}]
}

null 值不会显示在生成的 JSON 中,但可以读取。

import java.util.Arrays;
import java.util.List;

import com.google.gson.Gson;

public class Test {
public static void main(String[] args) {
Table table = createTable(
createRow(
createCol("Mushrooms", null),
createCol(1, null)),
createRow(
createCol("Onions", null),
createCol(1, null)),
createRow(
createCol("Olives", null),
createCol(1, null)),
createRow(
createCol("Zucchini", null),
createCol(1, null)),
createRow(
createCol("Pepperoni", null),
createCol(1, null)));

System.out.println(new Gson().toJson(table));
}

public static Table createTable(Row... rows) {
Table table = new Table();
table.setRows(Arrays.asList(rows));
return table;
}

public static Row createRow(Col... cols) {
Row row = new Row();
row.setC(Arrays.asList(cols));
return row;
}

public static Col createCol(Object v, Object f) {
Col col = new Col();
col.setV(v);
col.setF(f);
return col;
}

static class Table {
private List<Row> rows;

public Table() { }

public List<Row> getRows() {
return rows;
}

public void setRows(List<Row> rows) {
this.rows = rows;
}
}

static class Row {
private List<Col> c;

public Row() { }

public List<Col> getC() {
return c;
}

public void setC(List<Col> c) {
this.c = c;
}
}

static class Col {
private Object v;
private Object f;

public Col() { }

public Object getV() {
return v;
}

public void setV(Object v) {
this.v = v;
}

public Object getF() {
return f;
}

public void setF(Object f) {
this.f = f;
}
}
}

有关 null 的更多信息,请访问:Stack Overflow: Should JSON include null values

关于使用 Gson 将 Java 转为 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26640942/

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