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
'programing' 카테고리의 다른 글
Python에서 파일 확장자 변경 (0) | 2021.01.16 |
---|---|
파일이 'eof'에 있는지 확인하는 방법은 무엇입니까? (0) | 2021.01.16 |
STATICFILES_DIR, STATIC_ROOT 및 MEDIA_ROOT의 차이점 (0) | 2021.01.16 |
int 배열을 문자열로 (0) | 2021.01.16 |
NSArray에서 최대 숫자 값 찾기 (0) | 2021.01.16 |