programing

어떤 걸로 할까요?org.json의 JSONObject VS javax.json의 JsonObject

testmans 2023. 3. 21. 21:47
반응형

어떤 걸로 할까요?org.json의 JSONObject VS javax.json의 JsonObject

이게 제 첫 번째 글이에요.Android의 신참 개발자로서 매일 다양한 토픽의 SO 투고를 읽고 있습니다만, 이 질문에는 Google이나 SO의 도움은 없었습니다.

다음 중 하나:
검색 엔진이 대소문자를 구분하지 않는 것 같기 때문에 이 질문을 찾는 것은 평소보다 더 어려웠습니다. 대소문자를 구분하는 것은 이 호에서 매우 중요합니다.구글을 검색하면 클래스 자체, 오래된 기사 또는 전혀 관련이 없는 기사에 대한 링크만 얻을 수 있었습니다.JSONArray vs JSONObject.같은 .이치노제가 알기로는 SO상의 모든 관련 게시물은 JSONObject를 참조하고 있으며 JSONObject를 참조하고 있지 않습니다.

Oracle 문서나 json.org 문서 모두 반대편에 대해 언급하지 않았으며 org.json 라이브러리를 사용하는 Android 개발자 JSONObject 페이지도 언급하지 않았습니다.

http://docs.oracle.com/javaee/7/api/javax/json/JsonObject.htmlhttpdocs.oracle.com/javaee/7/api/javax/json/.html
http://www.json.org/javadoc/org/json/JSONObject.htmlhttpwww.json.org/javadoc/org/json/.html
JSONObject의 Android 레퍼런스 페이지 링크도 올렸을 텐데 신인으로서의 평판이 너무 낮습니다.

문제의 이력:Oracle 페이지에서 Json 인코딩 및 디코딩에 대해 읽고 있었는데, Andriod Studio IDE에 복사하여 붙여넣기를 시도했는데, 즉시 오류가 발생하여 평소처럼 Import 스테이트먼트를 제안하지 않았습니다.나는 그 수업이 빌트인 라이브러리의 일부가 아니라는 것을 알게 되었다.

문제는 JSONObject(org.json 라이브러리에서 가져온)가 아닌 JsonObject(javax.json 라이브러리에서 가져온)를 사용한 코드입니다.Android 페이지와 Oracle 페이지의 케이스 차이를 깨닫고 코드를 Json에서 JSON으로 변경하자 바로 IDE에서 org.json Import 스테이트먼트가 제공되었습니다.

경우 Oracle에서 만든 가 기본 입니까?외부 라이브러리가 기본 라이브러리의 일부가 아닌데 Oracle에서 만든 클래스가 기본 라이브러리의 일부가 아닌 이유는 무엇입니까?
JSON, JSON은 JSON 、 JSON 、 JSON 、 JSON 、 JSON 、 JSON 、 JSON 。
능적적 츠요시이치노
어떤 상황들은 한 쪽에게 더 좋고 어떤 상황들은 다른 쪽에게 더 나은가?
최종적으로 어떤 것을 사용해야 하며, 그 이유(아직 다루지 않은 경우)는 무엇입니까?
javax.json이 해당 라이브러리를 다운로드하기에 가장 안전한 장소는 어디입니까?

조금 늦었지만, 이것에 대한 제 의견을 나누고 싶었어요.

최근에 두 라이브러리가 동시에 사용되는 Java 프로젝트를 발견했을 때 이 문제에 직면했습니다.

는 ★★★★★★★★★★★★★★★★★★★★★★★★」org.json가 읽기 쉽고 사용하기 쉬운 이유는 (필요에 따라) 두 가지입니다.

  1. Json Object는 불변입니다.기존 JsonObject에 새 키/값 쌍을 추가할 수 없습니다(여기 참조: javax.json: 기존 JsonObject에 새 JsonNumber 추가).

  2. JSONObject 또는 JSONArray를 예쁘게 인쇄하려면 몇 줄이면 되지만 JSONObject 또는 JSONArray에서는 한 줄이면 됩니다.예:

    StringWriter sw = new StringWriter();
    Map<String, Object> properties = new HashMap<>();
    properties.put(JsonGenerator.PRETTY_PRINTING, true);
    
    JsonWriterFactory writerFactory = Json.createWriterFactory(properties);
    JsonWriter jsonWriter = writerFactory.createWriter(sw);
    
    jsonWriter.writeObject(jsonObject); //JsonObject created before
    jsonWriter.close();
    String prettyPrintedJSON = sw.toString();
    

파일에 쓰기 위해 들여쓰기된 JSON에 사용하는 코드입니다.org에서는 org.json만 돼jsonObject.toString(4)

이치하다JsonObjectBuilderJSON으로 javax.json피할 、 는는는더더더 。

많은 수 없을지는 ).JsonObject하지만 이건 내 생각이지.

JSONObject는 앞서 말한 바와 같이 Android의 API를 통해 제공됩니다.JsonObject는 Java EE 개발에 특히 사용되며, Java EE는 기본적으로 웹 애플리케이션 및 네트워킹 기능을 위해 사용됩니다.

Android가 Oracle Java EE 패키지에서 JsonObject를 사전 패키지화하지 않는 이유는 javax가 할 수 있는 많은 것들이 Android 내에서 허가 없이 인터넷에 접속하는 것과 같이 허용되지 않기 때문입니다.이는 javax의 전체 jars 파일을 가져오면 Android와 충돌한다는 것을 의미합니다.

Java EE로 자체 백엔드를 구축할 계획이라면 JSONObject를 통해 JsonObject를 사용하는 것이 좋습니다.한편, Android의 JSON을 지원하는 REST 서비스나 이와 유사한 서비스를 알고 있다면.

JSON Objects를 사용하기 위해서는 Google의 json-simple toolkit을 사용하는 것이 좋습니다.유용한 기능을 제공하고 외부 라이브러리에 의존하지 않아 안드로이드 앱 개발 과정에서 큰 문제가 발생하였습니다.

질문에 답하려면:프로젝트에서 json-simple을 사용하지 않으려면 org.json의 JSONObject를 사용해야 합니다.이는 Android JDK에서 제공되기 때문입니다.상세한 것에 대하여는, http://developer.android.com/reference/org/json/JSONObject.html 를 참조해 주세요.

  1. org.json에는 JSON 문자열을 해석하기 위한 해석 클래스가 포함되어 있지 않습니다.하는 동안에org.json.simple에는 해석 클래스가 포함되어 있습니다.

  2. org.json.JSONObject에는 int, boolean, object, string, JSON Array 등으로 직접 가져오기 위한 getter 메서드가 많이 포함되어 있습니다. org.json.simple.JSONObject에는 특정 메서드가 포함되어 있지 않기 때문에 특정 키의 값을 취득하면서 매번 cast를 입력해야 합니다.

  3. 알기 쉽게 말하면org.json.simple.JSONObject구문 분석만 하고 그것을 입력한다.org.json.JSONObject프로그램 내에서 더 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/29042622/which-one-to-use-jsonobject-from-org-json-vs-jsonobject-from-javax-json

반응형