Java:可以创建一个带有“变量”字段的类吗?
谢谢你的帮助
我有以下情况:
我有一个包含API响应的类:
public class EventsResponse extends ApiResponse {
public JSONArray response;
public EventsResponse(Boolean success,RequestHandle requesthandle, JSONArray responsefromapi) {
super(success, requesthandle);
if(responsefromapi!=null)this.response=responsefromapi;
else response=null;
}
public EventsResponse(Boolean success,RequestHandle requesthandle, JSONObject responsefromapi) {
super(success, requesthandle);
if(responsefromapi!=null)this.response=responsefromapi;
else response=null;
}
}
正如你所看到的,这里有些东西不起作用:
如果responsefromapi
是一个JSONObject
我试着把它分配给一个response
这是一个JSONArray
显然不起作用
我想做的是:
将responsefromapi
分配给response
,并根据responsefromapi
的内容将response
指定为JSONObject
或JSONArray
因此,我可以使用一个单格类EventsResponse
来处理这两种情况,并且EventsResponse
将包含一个response
,它是JSONObject
或JSONArray
,具体取决于情况
请问这可能吗
谢谢
# 1 楼答案
@LisaAnne。我的理解如下:
详细信息:-
根据我的理解,我们使用JSONObject来存储和传递JSON字符串的值,比如
{name:"LisaAnne", address:"xyz", responseArray:[{name1:"n1"},{name1:"n2"}]}.
JSONObject包含键值对,而, JSONArray包含一个有序对。如果将responseArray的值提取到JSONArray类型的对象中,您将成功要从响应中获取数组,应使用以下类型的语句
因此,从JSONObject到JSONArray的直接强制转换是不可能的。您必须获取包含数组的密钥,并使用上面给出的语句来获取它
如果你能给我在
JSONObject responsefromapi
和JSONArray responsefromapi
中收到的响应结构,我就能给你一个更好的解决方案希望这有帮助
# 2 楼答案
不是很优雅,但您可以尝试使用
Object
公共超类来引用您的响应:稍后在代码中使用引用的对象需要Java的反射:
# 3 楼答案
尝试使用泛型:
你可以这样称呼它:
及