org.json lib를 사용하여 JSON 문자열을 구문 분석합니다. 내 json 문자열은 입력 스트림에서 온 것입니다. 입력 스트림에서 JSON 문자열을 읽고이를 JSONObject() 생성자에 전달합니다. 하지만 다음과 같은 예외가 받고 있어요 :텍스트가 '{'로 시작해야합니다. Java에서 JSON을 구문 분석하는 중 오류가 발생했습니다.
[2011-08-28 23:42:52,235] main INFO - Task(): input = "{\"keyword\":\"xxxx"}" [2011-08-28 23:42:52,238] main ERROR - Task(): Exception: A JSONObject text must begin with '{' at 1 [character 2 line 1]
을 나는 문제가, 여분의 따옴표 내 input
에 "
것 같다. new JSONObject("{\"keyword\":\"xxxx"}");
을 사용할 때 정상적으로 작동합니다.
++++ UPDATE ++++ 여기
내 JSON 문자열을 읽는 코드 :
try {
in = new InputStreamReader(new BufferedInputStream(is));
int c;
while (true) {
c = in.read();
if (c == '\r' || c == '\n')
break;
requestLine.append((char) c);
}
} catch (Exception e) {
logger.error("Task(): Exception: "+e.getMessage());
}
input = requestLine.toString();
//input = "{\"keyword\":\"xxxx\"}"; //working fine
logger.info("Task(): input = "+input);
try{
org.json.JSONObject json = new org.json.JSONObject(input);
keyword = json.getString("keyword");
}catch(Exception e) {
logger.error("Task(): Exception: "+e.getMessage());
}
logger.info("Task(): keyword = "+keyword);
에 의해 따옴표를 후행하여이를 해결 한 * * 어떻게 문자열을 읽고 로깅하고 있습니까? 입력을 읽는 코드와 INFO 출력을 발생시키는 코드를 보여줍니다. – delnan
안녕하세요 @ 델 난, 내 질문을 업데이 트했습니다, 한 번 확인하십시오. –
글쎄, 나는 예외의 원인을 알고 있지만, 당신은 이미 자신을 추측했다. 문자열에는 거기에 있어서는 안되는 따옴표가 포함되어 있습니다.'requestLine'이 수집하는 문자열 주위에 마술처럼 따옴표를 추가하는 형식이 아닌 한, 그 따옴표는 프로그램에 입력 한 사람의 잘못입니다. 따옴표가 실제로 입력에 있으면 입력은 유효하지 않은 JSON이고 코드는 (해킹을 시도하는 것을 제외하고) 아무 것도 할 수 없습니다. – delnan