【问题标题】:Convert JSONObject to List<JSONObject> or a String to List<JSONObject>将 JSONObject 转换为 List<JSONObject> 或将字符串转换为 List<JSONObject>
【发布时间】:2015-07-27 09:29:23
【问题描述】:

我从我的 Java 应用程序提交了一个查询,该应用程序在 Elasticsearch 服务器上运行时以字符串的形式返回结果。我希望将结果作为JSONObject 对象的列表。我可以使用JSONObject jsonResponse = new JSONObject(responseString) 将字符串转换为JSONObject

有什么方法可以让我以List&lt;JSONObject&gt; 的形式得到这个吗?

【问题讨论】:

  • @trololo:这里的解决方案没有回答我的问题。我只需要一个简单、直接的转换为 List ,而不是一个数组。

标签: java json


【解决方案1】:

您可以使用JSONArray,而不是使用 JSONObject。如果您确实需要将其转换为列表,您可以执行以下操作:

List<JSONObject> list = new ArrayList<JSONObject>();
try {
    int i;
    JSONArray array = new JSONArray(string);
    for (i = 0; i < array.length(); i++)
        list.add(array.getJSONObject(i);
} catch (JSONException e) {
    System.out.println(e.getMessage());
}

【讨论】:

  • 没有专门针对 List 而不是 ArrayList 的方法吗?
  • @AishwaryaGarg 我已经更新了答案。 List> 只是一个接口。
  • 我收到“List 类型中的方法 add(org.json.JSONObject) 不适用于参数 (com.amazonaws.util.json.JSONObject)”的错误使用上面的代码。
【解决方案2】:

您的问题有一个答案: https://stackoverflow.com/a/17037364/1979882

ArrayList<String> listdata = new ArrayList<String>();     
JSONArray jArray = (JSONArray)jsonObject; 
if (jArray != null) { 
   for (int i=0;i<jArray.length();i++){ 
    listdata.add(jArray.get(i).toString());
   } 
} 

【讨论】:

  • 没有专门针对 List 而不是 ArrayList 的方法吗?
  • List 是一个接口。您可以使用 List listdata 而不是 ArrayList listdata
【解决方案3】:

这个方法真的很简单,也很有效

try {

    JSONObject jsonObject = new JSONObject(THESTRINGHERE);
    String[] names = JSONObject.getNames(jsonObject);
    JSONArray jsonArray = jsonObject.toJSONArray(new JSONArray(names));

    ArrayList<String> listdata = new ArrayList<String>();     
    JSONArray jArray = (JSONArray)jsonArray; 
    if (jArray != null) { 
       for (int i=0;i<jArray.length();i++){ 
           listdata.add(jArray.get(i).toString());
       } 
    } 
    //  System.out.println(listdata);


} catch (Exception e) {
    System.out.println(e.getMessage());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多