我提供了一个减少的JSON对象,我试图将其转换为Java POJO。我已经重命名了名称/值对以保持简单。
public class Content {
public String name1;
public Name2 name2;
public String name3;
}
public class Name2 {
public List <Name2Data> = new ArrayList <>();
}
public class Name2Data {
public String value1;
public String value2;
public Integer integer1;
}
以前我使用GSON“fromJson”来转换类似的对象。努力找出正确的阶级代表,并希望有人能帮助我。我遇到的问题是JSON名称值对“name2”。 (name2中可以包含一个或多个JSON数组)。
我尝试过如下表示,但这无法正常工作。
{{1}}
任何帮助如何正确建模或建议是否有更好的方法将不胜感激。 提前谢谢。
答案 0 :(得分:0)
JSON示例的name2是一个包含数组的数组,而这些数组又包含数组。
List<List<List>> name2 = new ArrayList<>();
可能会奏效。列表列表,其中包含包含多个类型值的列表。
如果我错了,请纠正我。这很快就会让人感到困惑。此刻,我无法对此进行测试。
如果您要使用JSON对象而不是最内层的数组,则可以使用
List<List<InnerData>> name2 = new ArrayList<>();
其中InnerData
是一个适合对象版本的模型
["string1", "string2", 1]
例如:
{
"string1": "string1",
"string2": "string2",
"anInt": 1
}
答案 1 :(得分:0)
JSON设计非常糟糕。
以下是一些课程
<强> Main.java 强>
import com.google.gson.Gson;
public class Main
{
public static void main(
String[] args)
{
DataObject dataObject;
final Gson gson = new Gson();
final String nuttyJson = "{\"content\": { \"name1\": \"value1\", \"name2\": [ [ [\"string1\", \"string2\", 1], [\"string3\", \"string4\", 2] ], [ [\"string5\", \"string6\", 3], [\"string7\", \"string8\", 4] ] ], \"name3\": \"value3\" } }";
dataObject = gson.fromJson(nuttyJson, DataObject.class);
dataObject = null;
}
}
<强> DataObject.java 强>
public class DataObject
{
private Content content;
private class Content
{
private String name1;
private Object[][][] name2;
private String name3;
public String getName1()
{
return name1;
}
public Object[][][] getName2()
{
return name2;
}
public String getName3()
{
return name3;
}
public void setName1(
final String newValue)
{
name1 = newValue;
}
public void setName2(
final Object[][][] newValue)
{
name2 = newValue;
}
public void setName3(
final String newValue)
{
name3 = newValue;
}
}
public Content getContent()
{
return content;
}
public void setContent(
Content content)
{
this.content = content;
}
}