2013-05-07 1 views
7

나는 서비스를 타격 때로는 다시 같은 것을 얻고있다 :return이 JSONObject 또는 JSONArray가 JSON-simple (Java)인지 확인하는 방법은 무엇입니까?

{ "param1": "value1", "param2": "value2" } 

과 같은 때때로 얻는 수익 :

[{ "param1": "value1", "param2": "value2" },{ "param1": "value1", "param2": "value2" }] 

어떻게 내가 갖는 어떤 알 수 있습니까? 나는 모두 getClass (수행 할 때 둘 다 문자열로 평가)하지만이 수행하려고 할 경우 : 두 번째 경우에

json = (JSONObject) new JSONParser().parse(result); 

을 나는

org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject 

어떻게이를 방지하기 위해 예외가? 나는 내가 어떻게 돌아가는지 확인하는 법을 알고 싶다. (첫 번째 경우에는 때때로 []이 표시되어 인덱스를 수행 할 수 없으며 첫 번째 문자를 확인하는 것보다 더 깨끗한 방식을 원합니다.

이 방법을 검사하는 방법이 있습니까?

+0

문자열이'[]'로 시작하고 끝나는 지 확인하는 것은 꽤 간단합니다. 너 뭐 해봤 니? – ApproachingDarknessFish

+0

나는 그것이 존재하고 []로 끝나는 지 알 수 있지만 문제는 내가 변환 할 수없는 "[{\\ param1 \"...}, {...}] 문자열을 얻는다는 것입니다. 다시 배열로. – PixMach

답변

19

간단한 자바 :

Object obj = new JSONParser().parse(result); 
if (obj instanceof JSONObject) { 
    JSONObject jo = (JSONObject) obj; 
} else { 
    JSONArray ja = (JSONArray) obj; 
} 

당신은 또한 (사칭) JSON은 [ 또는 {로 시작하면 당신은 JSON의 잘못된 종류를 구문 분석의 오버 헤드를 피하기 위해 원하는 경우 테스트 그러나 조심해야 할 수 있습니다. 공백 문자.

+0

감사합니다. 그게 내 질문에 대답했다. 이제 나머지 부분을 알아 보겠습니다. – PixMach

+0

Thanks Budy. :) – Krishna