programing

org.json을 사용하여 값을 null로 설정하려면 어떻게 해야 합니다.Java의 JSONObject?

showcode 2023. 3. 21. 22:41
반응형

org.json을 사용하여 값을 null로 설정하려면 어떻게 해야 합니다.Java의 JSONObject?

org.json을 사용하여 값을 null로 설정하려면 어떻게 해야 합니다.Java의 JSONObject?is Null을 사용하여 값이 null인지 확인할 수 있지만 null을 입력하면 무시됩니다.

JSONObject o = new JSONObject();
o.put("key",null);
o.isNull("key"); // returns true, buuuut...
o.has("key");    // returns false
o.isNull("somethingIHaventSetAtAll");    // also returns true, unfortunately

대신 설정을 시도합니다.null:

값이 없는 이름을 명시적으로 정의하기 위해 사용되는 Sentinel 값.null과 달리 다음 값을 가진 이름:

  • names() 배열에 표시되다
  • keys() 반복기에 표시되다
  • has(String)에 대해 true를 반환한다.
  • 허세를 부리지 않다
  • 부호화된 JSON 문자열에 포함되어 있습니다.

이 값은 null과 비교할 때 true를 반환함으로써 equals(Object)의 일반 계약을 위반합니다.toString() 메서드는 "null"을 반환합니다.

net.sf.json을 사용하는 경우JSONObject null을 생성해야 합니다.JSON타고

new JSONObject(true)

이렇게 하면 수업 분위기가 좋아진다.

groovy.grape.Grape.grab(group: "org.kohsuke.stapler", module: "json-lib", version: "2.4-jenkins-2")

저는 이 프로젝트를 만들었습니다.https://github.com/leonardofel/JSON-java-put-null-fix

변경(또는 수정)하려면 라이브러리를 pom.xml로 Import하기만 하면 됩니다.

코드는 다음과 같이 동작합니다.

JSONObject o = new JSONObject();
o.put("key", null);
o.isNull("key"); // returns true
o.has("key"); // returns true
o.isNull("somethingIHaventSetAtAll"); // returns true
o.get("key"); // returns null

o.remove("key");
o.isNull("key"); // returns true
o.has("key"); // returns false
o.isNull("somethingIHaventSetAtAll"); // returns true
o.get("key"); // throws JSONException "key" not found

유틸리티 클래스를 만들거나 기존 유틸리티 클래스가 있는 경우 이 유틸리티 메서드를 만듭니다.

 class JsonObjectUtility{
           public static Object getJSONObjectValue(Object value)  {
              return value == null ? "null" : value;
           }
 }

이 유틸리티를 통해 모든 입력을 전달한 후 다음과 같이 JSONObject put 메서드에 전달합니다(질문의 코드 샘플을 사용합니다).

JSONObject o = new JSONObject();
o.put("key", JsonObjectUtility.getJSONObjectValue(null) );

다음과 같이 json 문자열을 인쇄합니다.

{ "key" : null }

언급URL : https://stackoverflow.com/questions/13613754/how-do-you-set-a-value-to-null-with-org-json-jsonobject-in-java

반응형