首页 > 解决方案 > 如何从字符串生成器中提取 json 对象?

问题描述

我有以下形式的字符串生成器:

[{"abc" : ["something1", "something2"]}, {"def" : ["something3", "something4"]}]

如何转换它以便我可以在键上执行 get ?例如:object.get("abc") 我得到了列表。

我四处寻找解决方案:

我试着做:

JSONObject jsonObject = new JSONObject(sb.toString());

我得到以下异常:

exception org.json.JSONException: A JSONObject text must begin with '{' at 1 [character 2 line 1]

然后我尝试获取 Json 的子字符串,如下所示:

JSONObject jsonObject = new JSONObject(sb.toString().substring(1, sb.toString().length()-1));

回馈:

jsonObjwct {"Z-DwY2Ul":["Worried Blues","Worried Blues"]}

我只得到第一个对象,我需要所有对象。

我可以做哪些修改来获取特定键的列表?

标签: javajson

解决方案


它是一个JSONArrayof JSONObject,所以先转换成JSONArray

JSONArray array = new JSONArray(sb.toString());

然后您可以使用for循环进行迭代

 for (int i = 0, size = array.length(); i++) {
      JSONObject obj = array.optJSONObject(i);   //{"abc" : ["something1", "something2"]}
   }

推荐阅读