jsonobject问题jsonobject文本必须以“{”开头

vi4fp9gy  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(484)

所以我尝试使用这个json文件,但是当我尝试用jsonobject解析它时,它给了我一个错误。我试图找到类似的问题,但似乎ppl没有相同的东西。
代码生成此错误消息

Exception in thread "main" org.json.JSONException: 
        A JSONObject text must begin with '{' at 1 [character 2 line 1]

java 语:

public void readSubjects(String filename){
    obj =new JSONObject(filename.trim());
    objArr=obj.getJSONArray("subjects".trim());
    String tmpName;
    String tmpRealName;
    for(int i=0;i<objArr.length();i++){
        tmpName=objArr.getJSONObject(i).getString("subject_code");
        tmpRealName=objArr.getJSONObject(i).getString("name");
        System.out.println(tmpName + " " + tmpRealName);
    }
}

json文件:

{
    "teachers": [
        {
            "name": [
                "Peremann"
            ],
            "age": 22,
            "subject": [
                "pgr200"
            ],
            "availability": true,
            "contact_info": ""
        },
        {
            "name": "Jarand",
            "age": 23,
            "subject": "root"
        }
    ],
    "subjects": [
        {
            "subject_code": "pgr200",
            "name": "Avansert Javaprogrammering",
            "campus_priority": "Fjerdingen",
            "educationForm": "",
            "subjectProgram": "",
            "duration": "X",
            "amountOfHours": "",
            "amountOfStudents": 12
        }
    ],
    "studentGroups": [
        {
            "students": []
        }
    ],
    "rooms": [
        {
            "room_code": "F11",
            "fasilitetsstoette": "test",
            "max-capasity": 50,
            "room-size": "X"
        }
    ]}
s71maibg

s71maibg1#

这条线

obj =new JSONObject(filename.trim());

不正确。建造商 JSONObject 需要实际的json字符串,而不是文件名。
首先读取文件的内容,然后将其传递给 JSONObject 的构造函数。

String content = new String(Files.readAllBytes(Paths.get("example.json")));
obj = new JSONObject(content);
2q5ifsrm

2q5ifsrm2#

我为您检查了samebug,看看我们的用户是否有类似的问题。他们提出了以下建议。
json无效,或者您试图Map到其他模型
将单引号(')替换为双引号(“)。在json中应该使用双引号。
我还发现了一个github注解,它可能很有用。

相关问题