[英]org.json.JSONException: A JSONArray text must start with '[' at 1 [character 2 line 1]
[英]Getting error when trying parse JSON string. org.json.JSONException: A JSONArray text must start with '['
我正在嘗試解析 JSON 字符串,以便可以將其轉換為數組並通過索引遍歷每個元素。 下面是我的代碼:
String body = "{\"user\":\"d26d0op3-7da5-6ad8\",\"pass\":\"12784949-2b8c-827d\"}";
ArrayList<String> stringArray = new ArrayList<String>();
JSONArray jsonArray = new JSONArray(body);
for (int i = 0; i < jsonArray.length(); i++) {
stringArray.add(jsonArray.getString(i));
}
System.out.println(stringArray);
當我運行此代碼時,我收到以下錯誤:
Exception in thread "main" org.json.JSONException: A JSONArray text must start with '[' at 1 [character 2 line 1]
我嘗試用不同的方式格式化我的身體:
String body = "[{\"user\":\"d26d0op3-7da5-6ad8\",\"instanceId\":\"12784949-2b8c-827d\"}]";
但后來我收到以下錯誤:
Exception in thread "main" org.json.JSONException: JSONArray[0] is not a String.
我將如何正確解析我的 JSON?
您可能想了解一下 JSON 格式。 試試http://json.org 。
在您的第一種情況下, body
是 JSON '對象',而不是數組。 這類似於字典或鍵:值對 map。 JSON object 用 { 和 } 分隔。
要解析此主體,您將使用:
JSONObject job = new JSONObject(body);
String username = job.getString("user");
我想這可能就是你所追求的。
在第二種情況下,您的主體是一個 JSON 數組,其中包含一個 JSON Object。 JSON 數組由 [ 和 ] 分隔
如果你想要一個 JSON 字符串數組,它看起來像這樣,而不是:
body = "[ \"a\", \"b\", \"c\" ]";
整數數組如下所示:
body = "[ 1,2,3,4 ]";
您可以使用ObjectMapper.readValue(String, Class<T>)
方法將值從 json 字符串解析為某個 object。 在這種情況下,它可以是Map<String, String>
:
String body = "{\"user\":\"d26d0op3-6ad8\",\"pass\":\"12784949-827d\"}";
Map<String, String> map = new ObjectMapper().readValue(body, Map.class);
System.out.println(map); // {user=d26d0op3-6ad8, pass=12784949-827d}
如果您期待一些對象的列表:
String body = "[{\"user\":\"d26d0op3-6ad8\",\"pass\":\"12784949-827d\"}]";
List<Object> list = new ObjectMapper().readValue(body, List.class);
System.out.println(list); // [{user=d26d0op3-6ad8, pass=12784949-827d}]
String body = "{"user":"d26d0op3-6ad8","pass":"12784949-827d"}" 不是數組在此處輸入圖像描述
您可以像這樣轉換為 json 數組 String body = "[{"user":"d26d0op3-7da5-6ad8","pass":"12784949-2b8c-827d"}]";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.