gpt4 book ai didi

java - 如何将 JSONArray 转换为 int 数组?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:50:49 25 4
gpt4 key购买 nike

我在使用 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

Get the optional int value associated with an index. Zero is returned if there is no value for the index, or if the value is not a number and cannot be converted to a number.

关于java - 如何将 JSONArray 转换为 int 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20068852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com