java - 从 JSONObject 创建 JSONArray

标签 java json

大家好

我在从 JSONObject 解析 JSONArray 时遇到问题。我可能只是误会了。

创建要发送的 JSONObject:

int i = 0;
JSONArray jsonArray = new JSONArray();
String line;

while ((line = bufferedReader.readLine()) != null) {
    JSONObject rule = new JSONObject().put("rule", line);
    jsonArray.put(i,rule);
    i++;
}
return (new JSONObject().put(jsonStrings.REQUEST_RULES_ALL_RESPONSE, jsonArray));

这会在 json 对象中发送一个 json 数组,使事情变得更简单。这是正确的。

返回的对象格式如下:

{"REQUEST_RULES_ALL_RESPONSE":[ 
        {"rule":"something"},
        {"rule":"something"},
        {"rule":"something"}  ]}

我想将其解析为列表规则。 读取收到的 JSONObject:

//this returns the object as described above
JSONObject jsonObject = serverData.SendData(new JSONObject().put(jsonStrings.REQUEST_RULES_ALL, " ")); 

//Trying to Convert to JSONArray, the get strings are correct, 
//notice the REQUEST and REQUEST RESPONSE.

//problem line below
JSONArray JSONFirewallRules = new JSONArray ((JSONArray)jsonObject.get(jsonStrings.REQUEST_RULES_ALL_RESPONSE));  

ERROR: org.json.JSONException: Not a primitive array: class org.json.JSONArray

我不明白为什么这是个问题。我想从对象中获取 JSONArray。

最佳答案

在有问题的行中,不要转换为 JSONArray,而是使用 getJSONArray:

JSONArray JSONFirewallRules = jsonObject.getJSONArray(jsonStrings.REQUEST_RULES_ALL_RESPONSE); 

但是异常不是强制转换异常,而是构造函数异常,您试图从不受支持的项目列表构建 JSONArray 对象,这是另一个 JSONArray :)

关于java - 从 JSONObject 创建 JSONArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36279170/

相关文章:

java - 使用 Camel 的最合适的架构

java - 列表转队列如何实现FIFO

java - 将 maven 项目转换为 gradle - 任务初始化不存在

javascript - 对 json 数据进行排序

javascript - 帮助将图像动态加载到 Galleria

DB写操作中的Java并发

java - 如何从 vector 中取出一个对象作为它的原始类?

json - 如何在不需要包装器类型的情况下反序列化 JSON 数组?

javascript - 如何访问嵌套元素

java - 如何在 Java (Android) 中解析简单的 Json 响应(多个字符串)?