使用org.json.simple.parser解析含空格JSON值时遇EOF异常求助
解决org.json.simple解析含空格JSON值时的END OF FILE异常
首先,正常情况下org.json.simple的JSONParser是完全支持解析值中包含空格的JSON的——比如{"name":"Ad am"}是标准合法的JSON,理论上不会抛出异常。你遇到的"unexpected token END OF FILE at position 11"错误,大概率是传入的JSON字符串本身不完整或者被错误处理了,而非空格的问题。
可能的原因及解决办法:
- JSON字符串被截断:检查你传入的
stringJSON是否完整。比如如果实际传递的字符串是"{\"name\":\"Ad am"(缺少了结尾的"}),就会触发这个异常。建议在解析前先打印输出stringJSON的完整内容,确认它是符合JSON规范的完整字符串。 - 字符串转义错误:在Java中直接写JSON字符串时,要注意双引号的转义。正确的写法应该是:
如果转义错误,可能会导致实际传递的字符串不符合JSON格式。String stringJSON = "{\"name\":\"Ad am\"}"; - 依赖版本过旧:某些早期版本的
org.json.simple可能存在边缘场景的解析bug。建议升级到最新稳定版本(比如1.1.1及以上),可以通过Maven或Gradle更新依赖:
Maven依赖示例:<dependency> <groupId>com.googlecode.json-simple</groupId> <artifactId>json-simple</artifactId> <version>1.1.1</version> </dependency>
验证解析的正确示例代码:
import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; public class JsonTest { public static void main(String[] args) { String validJson = "{\"name\":\"Ad am\"}"; JSONParser parser = new JSONParser(); try { JSONObject json = (JSONObject) parser.parse(validJson); System.out.println("解析成功:" + json.get("name")); // 输出Ad am } catch (ParseException e) { e.printStackTrace(); } } }
如果按照上述步骤检查后仍然有问题,建议捕获异常时打印出完整的stringJSON内容,这样更容易定位具体哪里出了问题。
内容的提问来源于stack exchange,提问作者kyczawon
相关产品推荐
相关产品推荐

