当我使用 org.json.simple.parser.* 中的解析器时,只要 JSON 中的值之一包含空格,我就会收到异常。例如:
{"name":"Adam"}
可以正确解析,但是
{"name":"Ad am"}
会导致“位置 11 出现意外的标记文件结束”异常
这是我用来将 JSON 字符串转换为 JSONObject 的代码。
JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(stringJSON);
最佳答案
尝试完成下面的示例,每个值都包含除整数
1 之外的空格
,并给出此示例只是因为您没有共享源代码。
JSON 文件(personal_detail.json
):
{
"name":"arif mustafa",
"age":26,
"address":["district is Korba","state is Chhattisgarh","country is India"]
}
Java
读取 JSON
文件格式的源代码:
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
public class JSONExample {
public static void main(String[] args) {
JSONParser parser = new JSONParser();
try {
Object obj = parser.parse(new FileReader("src/resources/personal_detail.json"));
JSONObject jsonObject = (JSONObject) obj;
System.out.println(jsonObject + "\n");
String name = (String) jsonObject.get("name");
System.out.println("name : " + name);
long age = (Long) jsonObject.get("age");
System.out.println("age : " + age);
//get Object loop array
JSONArray address = (JSONArray) jsonObject.get("address");
System.out.println("address is : ");
Iterator<String> iterator = address.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
}
关于java - Java 解析时 JSON 值中的空格导致 "unexpected token END OF FILE at position 11"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48246149/