我试图解析一个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?
3条答案
按热度按时间piah890a1#
你可以用
ObjectMapper.readValue(String, Class<T>)
方法将json字符串中的值解析为某个对象。在这种情况下,它可以是一个Map<String, String>
:如果需要一些对象的列表:
rkue9o1l2#
您可能想了解一下json格式。尝试http://json.org .
在你的第一个案例中,
body
是json“object”,不是数组。这类似于字典,或者key:value pair Map。json对象用{和}分隔。要分析此正文,可以使用:
我想那可能就是你想要的。
在第二种情况下,主体是一个包含一个json对象的json数组。json数组由[和]分隔
如果您想要一个字符串的json数组,它应该是这样的:
整数数组如下所示:
cuxqih213#
字符串body=“{”user“:”d26d0op3-6ad8“,”pass“:”12784949-827d“}”不是数组enter image description here
您可以转换成json数组,如下字符串body=“[{”user“:”d26d0op3-7da5-6ad8”,“pass“:”12784949-2b8c-827d“}]”;