programing

Java에서 JSON 객체가 비어 있는지 테스트하는 방법

sourcetip 2021. 1. 16. 11:14
반응형

Java에서 JSON 객체가 비어 있는지 테스트하는 방법


내가받는 JSON 객체는 다음과 같습니다.

[{"foo1":"bar1", "foo2":"bar2", "problemkey": "problemvalue"}]

내가 테스트하려는 것은 problemvalue. 경우 problemvalue반환 JSON 개체, 나는 행복 해요. 그렇지 않은 경우 {}. 이 상태를 어떻게 테스트합니까? 나는 소용이없는 몇 가지를 시도했습니다.

이것이 내가 지금까지 시도한 것입니다.

//      if (obj.get("dps") == null) {  //didn't work
//      if (obj.get("dps").equals("{}")) {  //didn't work
if (obj.isNull("dps")) {  //didn't work
    System.out.println("No dps key");
}

이 줄 중 하나가 "No dps key"를 인쇄 할 것으로 예상 {"dps":{}}했지만 어떤 이유에서든 그렇지 않습니다. 나는 org.json. jar 파일은 org.json-20120521.jar.


obj.length() == 0

내가 할 일입니다.


해킹해도 괜찮다면-

obj.toString().equals("{}");

객체를 직렬화하는 것은 비용이 많이 들고 큰 객체의 경우 더 비싸지 만 JSON이 문자열로 투명하다는 것을 이해하는 것이 좋습니다. 따라서 문자열 표현을 보는 것은 문제를 해결하기 위해 항상 할 수있는 일입니다.


빈 배열 인 경우 :

.size() == 0

빈 개체 인 경우 :

.length() == 0

JSON 표기법 {}는 멤버가없는 객체를 의미하는 빈 객체를 나타냅니다. 이것은 null과 동일하지 않습니다. "{}"문자열과 비교하려고하므로 둘 다 문자열이 아닙니다. 어떤 json 라이브러리를 사용하고 있는지 모르겠지만 다음과 같은 방법을 찾으십시오.

isEmptyObject() 

시험:

if (record.has("problemkey") && !record.isNull("problemkey")) {
    // Do something with object.
}

빈 개체를 확인하려면 다음을 수행합니다.

obj.similar(new JSONObject())

JSONObject 및 JSONArray ()에 isEmpty () 메서드를 추가했습니다.

 //on JSONObject 
 public Boolean isEmpty(){         
     return !this.keys().hasNext();
 }

...

//on JSONArray
public Boolean isEmpty(){
    return this.length()==0;        
}

여기에서 얻을 수 있습니다 https://github.com/kommradHomer/JSON-java


Object getResult = obj.get("dps"); 
if (getResult != null && getResult instanceof java.util.Map && (java.util.Map)getResult.isEmpty()) {
    handleEmptyDps(); 
} 
else {
    handleResult(getResult); 
}

레코드가 ArrayNode 일 때 JSON이 다음 구조로 반환 된 경우 :

{}client 
  records[]

레코드 노드에 무언가가 있는지 확인하려면 size (); 메서드를 사용하여 수행 할 수 있습니다.

if (recordNodes.get(i).size() != 0) {}

if (jsonObj != null && jsonObj.length > 0)

중첩 된 JSON 개체가 JSONObject 내에서 비어 있는지 확인하려면 :

if (!jsonObject.isNull("key") && jsonObject.getJsonObject("key").length > 0)

@Test
public void emptyJsonParseTest() {
    JsonNode emptyJsonNode = new ObjectMapper().createObjectNode();
    Assert.assertTrue(emptyJsonNode.asText().isEmpty());
}

json 빈 케이스를 확인하려면 아래 코드를 직접 사용할 수 있습니다.

String jsonString = {};
JSONObject jsonObject = new JSONObject(jsonString);
if(jsonObject.isEmpty()){
 System.out.println("json is empty");
} else{
 System.out.println("json is not empty");
}

이것은 당신을 도울 수 있습니다.


시도해보세요 /*string with {}*/ string.trim().equalsIgnoreCase("{}")). 추가 공간이있을 수 있습니다.


다음 코드를 사용하십시오.

if(json.isNull()!= null){  //returns true only if json is not null

}

이 경우 다음과 같이합니다.

var obj = {};

if(Object.keys(obj).length == 0){
        console.log("The obj is null")
}

참조 URL : https://stackoverflow.com/questions/19170338/how-to-test-if-json-object-is-empty-in-java

반응형