Подтвердить что ты не робот

Как проверить, является ли объект JSON пустым в Java

Объект 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");
}

Я ожидал, что одна из этих строк напечатает "Нет ключа dps", потому что {"dps":{}}, но по какой-то причине это не так. Я использую org.json. Файл jar org.json-20120521.jar.

4b9b3361

Ответ 1

obj.length() == 0

- это то, что я сделал бы.

Ответ 2

Если ты в порядке с взломом -

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

Сериализация объекта является дорогостоящей и, более того, для больших объектов, но хорошо понимать, что JSON прозрачен как строка, и поэтому, глядя на представление строки, вы всегда можете решить проблему.

Ответ 3

Обозначение JSON {} представляет пустой объект, т.е. объект без членов. Это не то же самое, что и null. Ни одна строка не является строкой, поскольку вы пытаетесь сравнить ее со строкой "{}". Я не знаю, какую библиотеку json вы используете, но попытайтесь найти метод вроде:

isEmptyObject() 

Ответ 4

Если пустой массив:

.size() == 0

если пустой объект:

.length() == 0

Ответ 5

Try:

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

Ответ 6

Я бы сделал следующее, чтобы проверить пустой объект

obj.similar(new JSONObject())

Ответ 7

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

Ответ 8

Я добавил методы isEmpty() в JSONObject и JSONArray()

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

...

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

вы можете получить его здесь https://github.com/kommradHomer/JSON-java

Ответ 9

Если JSON возвращается со следующей структурой, когда записи являются ArrayNode:

{}client 
  records[]

и вы хотите проверить, есть ли в нем записи node то вы можете сделать это, используя метод size();

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

Ответ 10

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

Чтобы проверить, нет ли вложенного объекта JSON в JSONObject:

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

Ответ 11

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

Ответ 12

если вы хотите проверить наличие пустого регистра 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");
}

это может помочь вам

Ответ 13

Для этого случая я делаю что-то вроде этого:

var obj = {};

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

Ответ 14

Попробуйте /*string with {}*/ string.trim().equalsIgnoreCase("{}")), возможно, есть дополнительные пробелы или что-то еще.

Ответ 15

Используйте следующий код:

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

}