有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中解析时,JSON值中的空格会导致“位置11处的意外标记文件结尾”异常

当我使用org的解析器时。json。易于理解的解析器。*每当JSON中的一个值包含空格时,就会出现异常。例如:

{"name":"Adam"}

将正确解析,但

{"name":"Ad am"}

将导致“位置11处的文件意外标记结束”异常

下面是我用来将JSON字符串转换为JSONObject的代码

JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(stringJSON);

共 (1) 个答案

  1. # 1 楼答案

    试着看完下面的例子,每个值都包含space,除了integer一个值,并且给出这个例子只是因为你没有共享你的源代码

    JSON文件(personal_detail.json):

    {
        "name":"arif mustafa",
        "age":26,
        "address":["district is Korba","state is Chhattisgarh","country is India"]
    }
    

    Java要读取JSON文件格式,请执行以下操作:

    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.Iterator;
    
    import org.json.simple.JSONArray;
    import org.json.simple.JSONObject;
    import org.json.simple.parser.JSONParser;
    import org.json.simple.parser.ParseException;
    
    public class JSONExample {
    
        public static void main(String[] args) {
    
            JSONParser parser = new JSONParser();
    
            try {
    
                Object obj = parser.parse(new FileReader("src/resources/personal_detail.json"));
    
                JSONObject jsonObject = (JSONObject) obj;
                System.out.println(jsonObject + "\n");
    
                String name = (String) jsonObject.get("name");
                System.out.println("name : " + name);
    
                long age = (Long) jsonObject.get("age");
                System.out.println("age : " + age);
    
                //get Object loop array
                JSONArray address = (JSONArray) jsonObject.get("address");
                System.out.println("address is : ");
    
                Iterator<String> iterator = address.iterator();
                while (iterator.hasNext()) {
                    System.out.println(iterator.next());
                }
    
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (ParseException e) {
                e.printStackTrace();
            }
    
        }
    }