在Java

时间:2018-01-14 02:24:32

标签: java json parsing

当我使用org.json.simple.parser中的解析器时。*只要JSON中的某个值包含空格,我就会收到异常。例如:

{"name":"Adam"}

会正确解析,但

{"name":"Ad am"}

会导致“位置11处的意外令牌END OF FILE”异常

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

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

1 个答案:

答案 0 :(得分:0)

尝试通过以下示例进行操作,每个值包含spaceinteger之外的一个,并且仅因为您没有共享源代码而提供此示例。

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

    }
}