java - 组织.json.JSONException : A JSONArray text must start with '['

标签 java json

我有以下 json 文件:

[   { "1" : "b1.png"},
    { "2" : "bb1.png"},
    { "3" : "bbg1.png"}
]

并在以下行中:

JSONArray array = new JSONArray(jsonFilePath);

我得到以下异常:

org.json.JSONException: A JSONArray text must start with '[' at 1 [character 2 line 1]
    at org.json.JSONTokener.syntaxError(JSONTokener.java:433)
    at org.json.JSONArray.<init>(JSONArray.java:105)
    at org.json.JSONArray.<init>(JSONArray.java:144)
    at il.ac.technion.cs234311.dolphins.parse.ParseCardsTest.initialize(ParseCardsTest.java:23)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

但它是以'['开头的!!!

有什么想法吗? 非常感谢!

最佳答案

正如@JaredRummler 所建议的,您需要先将文件内容读入一个字符串,然后将该字符串传递给 JSONArray 构造函数。这是一些使用 Apache Commons IO 的示例代码读取文件:


import org.apache.commons.io.IOUtils;

...

public static String readJsonFile(String filename) throws IOException {
    try (InputStream is = new FileInputStream(filename)) {
        return IOUtils.toString(is, StandardCharsets.UTF_8);
    }    
}

....

JSONArray array = new JSONArray(readJsonFile(jsonFilePath));

关于java - 组织.json.JSONException : A JSONArray text must start with '[' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27517649/

相关文章:

android - 从 Android 发送带有参数的 json Http 请求

javascript - 带有分层字段的 HTML 表单到 JSON 对象

java - liquibase 中是否有替换功能?

java - 文件比较不会将结果写入文件

Java AWT KeyListener 不工作

json - 使用 jQuery 和 REST/JSON 简化客户端模板框架

c++ - 如何为 jsoncpp 编写 cmake 模块?

json - 从 Hive 表中的 json 字符串中提取值

java - 使用 ESC/POS 打印位图全页宽度

java - Hibernate 正则表达式验证字段不起作用