如何将JSONArray转换为int数组?

我的方法有问题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 [] …

反正还是行不通..

回答:

我从来没有用过这个,我也没有测试过,但看着你的代码和文档JSONObject,并JSONArray,这是我的建议。

// Receive JSON from server and parse it.

String jsonString = service.path("rest").path("hello")

.accept(MediaType.APPLICATION_JSON).get(String.class);

JSONObject obj = new JSONObject(jsonString);

// Retrieve number array from JSON object.

JSONArray array = obj.optJSONArray("numbers");

// Deal with the case of a non-array value.

if (array == null) { /*...*/ }

// Create an int array to accomodate the numbers.

int[] numbers = new int[array.length()];

// Extract numbers from JSON array.

for (int i = 0; i < array.length(); ++i) {

numbers[i] = array.optInt(i);

}

这应该适合您的情况。在更严重的应用程序,你可能要检查如果值确实是整数,作为optInt回报0,当值不存在,或者不是一个整数。

获取与索引关联的可选int值。如果索引没有值,或者该值不是数字并且不能转换为数字,则返回零。

以上是 如何将JSONArray转换为int数组? 的全部内容, 来源链接: utcz.com/qa/418236.html

回到顶部