我在使用JSONObject sayJSONHello()
方法时遇到了问题。
@Path("/hello")
public class SimplyHello {
@GET
@Produces(MediaType.APPLICATION_JSON)
public JSONObject sayJSONHello() {
JSONArray numbers = new JSONArray();
numbers.put(1);
numbers.put(2);
numbers.put(3);
numbers.put(4);
JSONObject result = new JSONObject();
try {
result.put("numbers", numbers);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
}
在客户端,我想得到一个int
数组[1, 2, 3, 4]
,而不是JSON
{"numbers":[1,2,3,4]}
我该怎么做?
客户代码:
System.out.println(service.path("rest").path("hello")
.accept(MediaType.APPLICATION_JSON).get(String.class));
我的方法返回一个JSONObject
,但我想从中提取数字,以便使用这些数字执行计算(例如作为int[]
)。
我把函数当作JSONObject。
String y = service.path("rest").path("hello").accept(MediaType.APPLICATION_JSON).get(String.class);
JSONObject jobj = new JSONObject(y);
int [] id = new int[50];
id = (int [] ) jobj.optJSONObject("numbers:");
然后我得到错误:无法从JSONObject转换为int[]
2其他方式
String y = service.path("rest").path("hello").accept(MediaType.APPLICATION_JSON).get(String.class);
JSONArray obj = new JSONArray(y);
int [] id = new int[50];
id = (int [] ) obj.optJSONArray(0);
而这次我得到的是:无法从JSONArray强制转换为int[]...
它不工作反正。
5条答案
按热度按时间pwuypxnk1#
我从来没有使用过它,也没有测试过它,但是看看你的代码和
JSONObject
和JSONArray
的文档,这就是我的建议。这应该对你的案子有用。在更严格的应用程序中,您可能需要检查值是否确实是整数,因为当值不存在或不是整数时,
optInt
返回0
。获取与索引关联的可选int值。如果索引没有值,或者值不是数字且无法转换为数字,则返回零。
rkue9o1l2#
如果你可以接受一个List作为结果,也可以接受使用Gson,有一个非常简单的方法来做到这一点,只需几行代码:
我知道这并不是你所要求的,但根据我的经验,整数列表可以以许多与基本int[]相同的方式使用。关于如何将链表转换为数组的更多信息,可以在这里找到:How to convert linkedlist to array using
toArray()
?l3zydbqr3#
2023年5月
Java:
下面是一个简单的方法,用于处理
JSONArray
转换为Int Array
:Kotlin:
intArr
是Array<Int>
it
从第一个数组元素开始,依次为每个数组元素调用高阶函数。它应该返回给定索引的数组元素的值。1rhkuytd4#
你也可以这样做
64jmpszr5#
而不是-
你可以试试(我还没有测试过)
或者遍历数组“numbers”,并将每一个单独放入“result”中。