为什么我的Spring项目返回一个JSONArray文本必须以'['开头1?

时间:2019-08-02 16:17:52

标签: java json spring spring-boot

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

  

线程“ main” 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"
                }
            ]
        }
    }
]

1 个答案:

答案 0 :(得分:1)

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

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

来自JsonArray