Ответ 1
obj.length() == 0
- это то, что я сделал бы.
Объект 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
.
obj.length() == 0
- это то, что я сделал бы.
Если ты в порядке с взломом -
obj.toString().equals("{}");
Сериализация объекта является дорогостоящей и, более того, для больших объектов, но хорошо понимать, что JSON прозрачен как строка, и поэтому, глядя на представление строки, вы всегда можете решить проблему.
Обозначение JSON {} представляет пустой объект, т.е. объект без членов. Это не то же самое, что и null. Ни одна строка не является строкой, поскольку вы пытаетесь сравнить ее со строкой "{}". Я не знаю, какую библиотеку json вы используете, но попытайтесь найти метод вроде:
isEmptyObject()
Если пустой массив:
.size() == 0
если пустой объект:
.length() == 0
Try:
if (record.has("problemkey") && !record.isNull("problemkey")) {
// Do something with object.
}
Я бы сделал следующее, чтобы проверить пустой объект
obj.similar(new JSONObject())
Object getResult = obj.get("dps");
if (getResult != null && getResult instanceof java.util.Map && (java.util.Map)getResult.isEmpty()) {
handleEmptyDps();
}
else {
handleResult(getResult);
}
Я добавил методы 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
Если JSON возвращается со следующей структурой, когда записи являются ArrayNode:
{}client
records[]
и вы хотите проверить, есть ли в нем записи node то вы можете сделать это, используя метод 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");
}
это может помочь вам
Для этого случая я делаю что-то вроде этого:
var obj = {};
if(Object.keys(obj).length == 0){
console.log("The obj is null")
}
Попробуйте /*string with {}*/ string.trim().equalsIgnoreCase("{}"))
, возможно, есть дополнительные пробелы или что-то еще.
Используйте следующий код:
if(json.isNull()!= null){ //returns true only if json is not null
}