我编写的代码采用包含 JSON 数据的字符串。我正在按 ID 对我的 JSON 对象数组进行排序。当我使用我的方法时,我得到这个异常:“org.json.JSONException: A JSONArray text must start with '[' at 1 [character 2 line 1]”。我在这里缺少什么以及如何解决它?private static void ResortJsonByUseCaseID( String jsonArrStr ){ JSONArray jsonArr = new JSONArray(jsonArrStr); JSONArray sortedJsonArray = new JSONArray(); List<JSONObject> jsonValues = new ArrayList<JSONObject>(); for (int i = 0; i < jsonArr.length(); i++) { jsonValues.add(jsonArr.getJSONObject(i)); } java.util.Collections.sort( jsonValues, new java.util.Comparator<JSONObject>() { private static final String KEY_NAME = "useCaseId"; @Override public int compare(JSONObject a, JSONObject b) { String valA = new String(); String valB = new String(); try { valA = (String) a.get(KEY_NAME); valB = (String) b.get(KEY_NAME); } catch (JSONException e) { //do something int tal = 9; } return valA.compareTo(valB); } }); for (int i = 0; i < jsonArr.length(); i++) { sortedJsonArray.put(jsonValues.get(i)); } jsonArrStr = sortedJsonArray.toString();}
1 回答
炎炎设计
TA贡献1808条经验 获得超4个赞
您所描述的代码仅适用于如下所示的 json:
[
{ "useCaseId" : "4", ... },
{ "useCaseId" : "1", ... },
{ "useCaseId" : "a", ... },
...
]
如您所见,字符串以一个[字符开头,就像所要求的异常一样。
由于“大多数”jsons 以{我猜测您的 json 结构是不同的,然后您将需要相应地调整您的代码。例如,如果您的 json 数组嵌入在“大多数”jsons 之类的对象中:
{
"useCases" : [
{ "useCaseId" : "4", ... },
{ "useCaseId" : "1", ... },
{ "useCaseId" : "a", ... },
...
]
}
那么你必须创建一个JSONObject obj = new JSONObject(jsonArrStr),然后JSONArray通过调用(JSONArray)obj.get("useCases").
添加回答
举报
0/150
提交
取消