Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试解析JSON字符串时出错。org.json.JSONException:JSONArray文本必须以';[';_Java_Arrays_Json_Parsing_Mapping - Fatal编程技术网

Java 尝试解析JSON字符串时出错。org.json.JSONException:JSONArray文本必须以';[';

Java 尝试解析JSON字符串时出错。org.json.JSONException:JSONArray文本必须以';[';,java,arrays,json,parsing,mapping,Java,Arrays,Json,Parsing,Mapping,我试图解析一个JSON字符串,以便将其转换为一个数组,并通过索引遍历每个元素。 下面是我的代码: String body=“{\'user\”:\“d26d0op3-7da5-6ad8\”,“pass\”:\“12784949-2b8c-827d\”; ArrayList stringArray=新的ArrayList(); JSONArray JSONArray=新JSONArray(主体); for(int i=0;i

我试图解析一个JSON字符串,以便将其转换为一个数组,并通过索引遍历每个元素。 下面是我的代码:

String body=“{\'user\”:\“d26d0op3-7da5-6ad8\”,“pass\”:\“12784949-2b8c-827d\”;
ArrayList stringArray=新的ArrayList();
JSONArray JSONArray=新JSONArray(主体);
for(int i=0;i
运行此代码时,出现以下错误:

Exception in thread "main" org.json.JSONException: A JSONArray text must start with '[' at 1 [character 2 line 1]
Exception in thread "main" org.json.JSONException: JSONArray[0] is not a String.
我尝试用以下不同的方式格式化我的身体:

String body=“[{\'user\”:\“d26d0op3-7da5-6ad8\”,“instanceId\”:\“12784949-2b8c-827d\”}];
但是我得到了以下错误:

Exception in thread "main" org.json.JSONException: A JSONArray text must start with '[' at 1 [character 2 line 1]
Exception in thread "main" org.json.JSONException: JSONArray[0] is not a String.

如何正确解析JSON?

您可能想了解一下JSON格式。试试看

在第一种情况下,
body
是一个JSON“对象”,而不是数组。这类似于字典或键:值对映射。JSON对象用{和}分隔

要分析此正文,请使用:

JSONObject job = new JSONObject(body);
String username = job.getString("user");
我想这可能就是你想要的

在第二种情况下,主体是一个包含一个JSON对象的JSON数组

如果您想要一个字符串的JSON数组,它应该是这样的:

 body = "[ \"a\", \"b\", \"c\" ]";
整数数组如下所示:

 body = "[ 1,2,3,4 ]";
您可以使用该方法将json字符串中的值解析为某个对象。在本例中,该值可以是
映射

String body=“{\'user\”:\“d26d0op3-6ad8\”,“pass\”:\“12784949-827d\”;
Map Map=newObjectMapper().readValue(body,Map.class);
System.out.println(map);//{user=d26d0op3-6ad8,pass=12784949-827d}
如果您需要一些对象的列表:

String body=“[{\'user\':\'d26d0op3-6ad8\',\'pass\':\'12784949-827d\'””;
List List=newObjectMapper().readValue(body,List.class);
System.out.println(list);//[{user=d26d0op3-6ad8,pass=12784949-827d}]
字符串主体=“{”user:“d26d0op3-6ad8”,“pass:“12784949-827d”}”不是数组

您可以像这样转换为json数组
String body=“[{”user:“d26d0op3-7da5-6ad8”,“pass:“12784949-2b8c-827d”}];

添加
[
]
时的问题是
jsonArray.getString(i)
。数组的一个元素是
JSONObject
,而不是
String