簡體   English   中英

在Java中解析時,JSON值中的空格會導致“位置11處的意外令牌END OF FILE”異常

[英]A space in JSON value causes “unexpected token END OF FILE at position 11” exception when parsing in Java

當我使用來自org.json.simple.parser。*的解析器時,只要JSON中的值之一包含空格,就會出現異常。 例如:

{"name":"Adam"}

會正確解析,但是

{"name":"Ad am"}

會導致“位置11處的令牌意外結束”

這是我用來將JSON字符串轉換為JSONObject的代碼。

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

嘗試遍歷下面的示例,每個值都包含除integer 1以外的space ,並僅由於未共享源代碼而給出此示例。

JSON文件( personal_detail.json ):

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

讀取JSON文件格式的Java源代碼:

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();
        }

    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM