【问题标题】:Why does my Spring project return A JSONArray text must start with '[' at 1?为什么我的 Spring 项目返回 A JSONArray text must start with '[' at 1?
【发布时间】:2019-08-02 16:17:52
【问题描述】:

我是 Spring Boot 和 json 的新手,如果有一个愚蠢的问题,请原谅我。我正在尝试读取我的 json 文件,将其转换为 JSONObject,然后 将此转换为JSONArray。我已经注释掉了这两行 这是因为我尝试从读取文件到数组。我的 JSON 文件以 [ 开头,所以我不确定为什么会收到此错误。

线程“主”org.json.JSONException 中的异常:JSONArray 文本 必须以 '[' 在 1 [字符 2 第 1 行] 开始

InputStream inputStream = TypeReference.class.getResourceAsStream("/json/req.json");        
List<PIECase> allCases = new ArrayList<PIECase>();              
InputStream rawJson = inputStream;
//JSONObject jsonObject = new JSONObject(rawJson);
//JSONArray jsonArray = jsonObject.getJSONArray("PIECases");
JSONArray jsonArray = new JSONArray(rawJson.toString());

for(int i =0; i < jsonArray.length(); i++) {
    //the JSON data we get back from array as a json object
    JSONObject jsonPIECases = jsonArray.getJSONObject(i);

    // more code
}

req.json

[
    {
        "PIECases": {
            "PIECases": [
                {
                    "Case_ID": "1",
                    "SortCode": "123456",
                    "AccountNumber": "12345678",
                    "Amount": "50",
                    "DateOfPayment": "2019-07-29"
                },
                {
                    "Case_ID": "2",
                    "SortCode": "123456",
                    "AccountNumber": "12345678",
                    "Amount": "50",
                    "DateOfPayment": "2019-07-29"
                }
            ]
        }
    }
]

【问题讨论】:

标签: java json spring spring-boot


【解决方案1】:

rawJson.toString() 不返回 json 内容,而只是返回 InputStream 的默认 Object#toString() 方法的结果,使用;

JsonReader jsonReader = Json.createReader(inputStream);
JsonArray array = jsonReader.readArray();
jsonReader.close();

来自JsonArray

【讨论】:

    猜你喜欢
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多