我正在做一个使用json与api通信的项目。这是我第一次尝试json,我离开java已经有几年了,所以请耐心听我说。
以下是数据的大致情况:
字符串1:
[{
"apicall1":
[{
"thisField":"thisFieldData",
"thatField":"thatFieldData",
"anotherField":"anotherFieldData"
}]
}]
字符串2:
[{
"apicall2":
[{
"thatField":"thatFieldData",
"someFieldsAreTheSame":"someFieldsAreTheSameData",
"otherFieldsAreNotTheSame":"otherFieldsAreNotTheSame"
}]
}]
从我的数据示例中可以看到,api返回一个包含所用api的json字符串。数组中包含数据。api有很多共同的数据字段,但除此之外它们是不相关的。
编辑:有许多这样的api类型需要处理。
我要做的是创建一个响应类,它接受所有json字符串并返回一个包含适当数据的对象。
例如:
Gson gson = new Gson(); //Custom TypeAdapter goes here if needed.
Response apicall2 = gson.fromJson(apicall2String, Response.class);
System.out.println(apicall2.thatField); //Prints thatFieldData
System.out.println(apicall2.someFieldsAreTheSame); //Prints someFieldsAreTheSameData
System.out.println(apicall2.otherFieldsAreNotTheSame); //Prints otherFieldsAreNotTheSameData
这就是我迷路的地方。这是我到目前为止的情况。我想我需要在这里使用一个typeadapter,但是还没有弄清楚如何将它应用到我的案例中。
public class Response { //Change to TypeAdapter possibly?
}
public class apicall1 {
String thisField;
String thatField;
String anotherField;
}
public class apicall2 {
String thatField;
String someFieldsAreTheSame;
String otherFieldsAreNotTheSame;
}
2条答案
按热度按时间eqfvzcg81#
你可以用格森的
TypeToken
类将json反序列化为对象。下面是一个例子:json码:
型号:
转换器:
sirbozc52#
我不知道你是否想在一个类中同时使用两个适配器。可能不是最好的oop设计。
要实现这一目标,您需要这样做: