2013-08-29 2 views
0

"obj13="이 포함 된 잘못된 json 인 문자열 응답이 있습니다. JSONObject(JAVA)으로 변환하고 사용하고 있습니다. 문자열 분할 작업을 사용하지 않고 JSONObject로 변환하는 좋은 방법이 있습니다.자바에서 잘못된 JSON 문자열을 JSONObject로 변환하는 방법은 무엇입니까?

obj13={ 
    players: [ 
    { 
     name: "rocky", 
     place: "brazil", 
     age: "21", 
    }, 
    { 
     name: "andy", 
     place: "New Zealand", 
     age: "23", 
    } 
    ] 
} 
+2

가짜 접두어를 분리하는 것이 잘못된 이유는 무엇입니까? –

+0

@HotLicks 그냥 자바 스크립트에서 eval (String)을 사용하여 객체에 대한 언급 문자열을 변환하고 them.I을 사용하면 Java에서 이와 같은 json 응답을 처리 할 수있는 무언가가 있다고 생각할 수 있습니다. – user818455

+0

당신은 언제나 자신의 JSON 파서를 작성하거나 오픈 소스를 파서 수정할 수있다. 그 외에는 원하는 것을 할 수있는 방법이 없습니다. Java는 Javascript가 아닙니다. –

답변

1

이것은 물론 JSON이 아닌 JavaScript입니다. 가능한 경우 서비스 제공 업체로 돌아가 JSON 응답을 요청합니다.

json=json.substring(json.indexof('=')+1); 

를 한 후 결과를 구문 분석 : 문자열의 형식이 일치하는 경우

, 당신은 사용할 수 있습니다. 가장 좋은 파서는 따옴표없이 키워드를 허용하고 불필요한 쉼표를 허용하는 옵션이 있어야합니다 (mine does).하지만 안타깝게도 JSONObject를 만들지는 못하지만 하위 수준입니다. 데이터 구조를 구성하도록 설계되었습니다. 호출자의 선택. 원하는 경우 JSONObject가 될 수 있지만 코드를 작성해야합니다.

결과가 할당되었거나 할당되지 않은 경우 약간의 장점을 얻고 '='앞의 공백이 아닌 문자가 JS 식별자와 그 뒤에 공백이 아닌 첫 번째 공백에 대해 유효하도록 할 수 있습니다 '{'입니다.

+0

"="가 ":"로 취급되어야한다는 확신 할 수있는 어딘가에 파서가있을 수 있습니다. 따라서 모든 것을'{}'로 감싸면 파싱됩니다. 그러나 문자열을 감싸는 것처럼 쉽게자를 수 있습니다. –

관련 문제