Simple JSON은 Apache 프로토콜을 기반으로 Google이 개발 한 Java JSON 구문 분석 프레임 워크입니다.
JSON-Simple의 홈페이지 : //www.vevb.com/softs/455885.html
다운로드 된 파일은 JSON_SIMPLE.JAR입니다
예 1 : JSONVALUE를 사용하는 매우 편리한 방법
System.out.println ( "==========================================================================================================================================================================================================================; obj = jsonArray 배열; obj2 = (jsonobject) array.get (1); "====== 필드 /"================================================= "{}";jsonObject는 맵을 상속 받고 JSONARRAY는 목록을 상속 받으므로 표준 맵 및 목록을 사용하여 JSONOBJECT 및 JSONARRAY를 사용할 수 있습니다.
JSONVALUE는 배열 또는 객체를 사용할 수 있습니다.
예제 2 : jsonparser를 사용하는 빠른 방법
JSONPARSER PARSER = NEW JSONPARSER (); System.out.println ( "================================================================================================= Array = (JSONARRAY) obj; "======== array의 두 번째 요소 =================== (1); System.out.println (); System.out.println ( "===== 필드 /"1 /"===================================================================================================== "5,];
JSONPARSER를 사용하려면 예외를 잡아야합니다.
예 3 : 예외 처리
문자열 jsontext = "[[null, 123.45,/"a // tb c/"]}, true"; JSONPARSER PARSER = NEW JSONPARSER (); try {parser.parse (jsontext); } catch (parseException pe) {System.out.println ( "위치 :" + pe.getPosition ()); System.out.println (PE); }실행 결과 :
위치 : 25 위치 25에서 예상치 못한 토큰 오른쪽 버팀대 (}).
예 4 : 컨테이너 공장
Containerfactory 클래스를 사용하여 컨테이너 공장을 만듭니다.
문자열 jsontext = "{/"first/": 123,/"second/": [4, 5, 6],/"Third/": 789}"; JSONPARSER PARSER = NEW JSONPARSER (); ContainerFactory ContainerFactory = New ContainerFactory () {공개 목록 CreaterRayContainer () {return New LinkedList (); } public map createObjectContainer () {return new linkedHashMap (); }}; try {map json = (map) parser.parse (jsontext, containerfactory); iterator iter = json.entryset (). iterator (); System.out.println ( "== 반복 결과 =="); while (iter.hasnext ()) {map.entry entry = (map.entry) iter.next (); system.out.println (enther.getKey () + "=>" + entery.getValue ()); } system.out.println ( "== TOJSONSTRING () =="); System.out.println (jsonValue.tojsonstring (json)); } catch (parseException pe) {System.out.println (PE); }결과는 다음과 같습니다.
== 반복 결과 == First => 123 Second => [4,5,6] Third => 789 == TOJSONSTRING () == { "첫 번째": 123, "Second": [4,5,6], "Third": 789} 컨테이너 공장을 사용하지 않으면 Simple-Json은 기본적으로 jsonobject 및 jsonarray를 사용합니다. 예 5 : 중단 가능한 색소폰 컨텐츠 처리 Simplejson은 텍스트 스트림을 처리하기 위해 간단한 정지 된 색소폰 컨텐츠 처리 방법을 권장합니다. 사용자는 논리 입력 스트림의 어느 시점에서든 유지 한 다음 다른 논리를 처리 한 다음 이전 처리를 계속할 수 있습니다. 전체 스트림이 처리 될 때까지 기다리지 마십시오. 여기 예입니다. keyfinder.java : 클래스 키 파인더는 Contenthandler {개인 객체 값; 개인 부울 발견 = 거짓; 개인 부울 끝 = 거짓; 개인 문자열 키; 개인 문자열 matchkey; public void setmatchkey (String Matchkey) {this.matchkey = matchkey; } public Object getValue () {return 값; } public boolean isend () {return end; } public void setfound (부울 발견) {this.found = 발견; } public boolean isfound () {return found; } public void startjson ()는 parseexception, ioexception {found = false; 끝 = 거짓; } public void endjson ()는 parseexception, ioexception {end = true; } public boolean primitive (객체 값)는 parseexception, ioexception {if (key! = null) {if (key.equals (matchkey)) {found = true; this.value = value; key = null; 거짓을 반환합니다. }} true를 반환합니다. } public boolean startarray ()는 parseexception, ioexception {return true; } public boolean startObject ()는 parseexception, ioexception {return true; } public boolean startObjectentry (문자열 키)는 parseexception, ioexception {this.key = key; 진실을 반환하십시오. } public boolean endarray ()는 parseexception, ioexception {return false; } public boolean endobject ()는 parseexception, ioexception {return true; } public boolean endobjectentry ()는 parseexception, ioexception {return true; }} 주요 논리 : String JsonText = "{/"first/": 123,/"second/": [{/"k1/": {/"id/":/"id1/"}}, 4, 5, 6, {/"id/": 123}],/"Third/": 789,/"id/": null}"; JSONPARSER PARSER = NewJsonParser (); KeyFinder Finder = NewKeyFinder (); finder.setMatchKey ( "id"); try {while (! finder.isend ()) {parser.parse (jsontext, finder, true); if (finder.isfound ()) {finder.setfound (false); System.out.println ( "발견 된 ID :"); System.out.println (finder.getValue ()); }}} catch (parseexception pe) {pe.printstacktrace (); } 실행 결과 :발견 된 ID : ID1 발견 ID : 123 발견 ID : NULL예 6 : 전체 객체 그래프는 색소폰과 같은 것을 사용하여 분석됩니다.
클래스 변압기는 Contenthandler {Private Stack Valuestack; public object getResult () {if (valuestack == null || valuestack.size () == 0) return null; return valuestack.peek (); } public boolean endarray ()는 parseexception, ioexception {trackback (); 진실을 반환하십시오. } public void endjson ()는 parseexception, ioexception {} public boolean endobject () parseexception, ioexception {trackback (); 진실을 반환하십시오. } public boolean endobjectentry ()는 parseexception, ioexception {object value = valuestack.pop (); 개체 키 = valuestack.pop (); map parent = (map) valuestack.peek (); parent.put (키, 값); 진실을 반환하십시오. } private void trac Object prev = valuestack.peek (); if (prev instanceof string) {valuestack.push (value); }}} private void 소비 value (객체 값) {if (valuestack.size () == 0) valuestack.push (value); else {object prev = valuestack.peek (); if (prev instanceof list) {list array = (list) prev; Array.add (값); } else {valuestack.push (value); }}} public boolean primitive (객체 값) parseexception, ioexception {소비 value (value); 진실을 반환하십시오. } public boolean startArray ()는 parseException, ioException {list array = new JsonArray (); 소비 값 (배열); Valuestack.push (배열); 진실을 반환하십시오. } public void startjson ()는 parseexception, ioexception {valuestack = new stack (); } public boolean startObject ()는 parseException, ioException {map Object = new JsonObject (); 소비한 (객체); Valuestack.push (객체); 진실을 반환하십시오. } public boolean startObjectentry (문자열 키)는 parseexception, ioexception {valuestack.push (key); 진실을 반환하십시오. }} 주요 방법 논리 :문자열 jsonstring = <input json text>; 객체 값 = null; JSONPARSER PARSER = NEW JSONPARSER (); 변압기 변압기 = 새로운 변압기 (); parser.parse (Jsonstring, Transformer); value = transformer.getResult ();실행 결과 :
문자열 jsonstring = <input json text>; 객체 값 = null; JSONPARSER PARSER = NewJsonParser (); value = parser.parse (jsonstring);참고 : JSONPAUSER는 스레드 안전이 아닙니다.
JSON_ENCODE -JSON 변수 인코딩.
설명 : String json_encode ($ value)는 값 값의 JSON 형태를 반환합니다.
매개 변수 : 인코딩 할 값은 리소스 유형을 제외한 모든 데이터 유형 일 수 있습니다.
이 기능은 UTF-8 인코딩 된 데이터 만 허용 할 수 있습니다 (변환 참고 : 문자/문자열 유형의 데이터를 참조하십시오).
반환 값 : 인코딩이 성공하면 JSON에 표시된 문자열이 반환됩니다.