Java 如何检查json中的空元素

Java 如何检查json中的空元素,java,json,scala,validation,Java,Json,Scala,Validation,在scala/java中是否有任何方法可以评估JSON中的所有项是否都为空 我希望有一个验证器,避免json中的项具有空值,如: [{"elem1":"","elem2":"","elem3":"a"}] 其中前两个元素为空。使用Play JSON: import play.api.libs.json._ def hasEmptyValue(json: JsValue): Boolean = { json match { case _: JsBoolean => false

在scala/java中是否有任何方法可以评估JSON中的所有项是否都为空

我希望有一个验证器,避免json中的项具有空值,如:

[{"elem1":"","elem2":"","elem3":"a"}]
其中前两个元素为空。

使用Play JSON:

import play.api.libs.json._

def hasEmptyValue(json: JsValue): Boolean = {
  json match {
    case _: JsBoolean => false
    case _: JsNull => false // could also be true, depending on your definition
    case _: JsNumber => false
    case JsArray(jsons) =>
      if (jsons.nonEmpty) jsons.filter(isEmptyJson).nonEmpty
      else true
    case JsObject(kvs) =>
      if (kvs.nonEmpty) kvs.values.filter(isEmptyJson).nonEmpty
      else true

def jsonStringHasEmptyValue(str: String): Boolean =
  hasEmptyValue(Json.parse(str))
使用Play JSON:

import play.api.libs.json._

def hasEmptyValue(json: JsValue): Boolean = {
  json match {
    case _: JsBoolean => false
    case _: JsNull => false // could also be true, depending on your definition
    case _: JsNumber => false
    case JsArray(jsons) =>
      if (jsons.nonEmpty) jsons.filter(isEmptyJson).nonEmpty
      else true
    case JsObject(kvs) =>
      if (kvs.nonEmpty) kvs.values.filter(isEmptyJson).nonEmpty
      else true

def jsonStringHasEmptyValue(str: String): Boolean =
  hasEmptyValue(Json.parse(str))

我想您应该使用您使用的JSON库的特性。即使库没有提供适当的验证选项,也可以使用库的JSON标记器手动实现验证。仅举一个使用小型JSON解析器的示例:


我想您应该使用您使用的JSON库的特性。即使库没有提供适当的验证选项,也可以使用库的JSON标记器手动实现验证。仅举一个使用小型JSON解析器的示例:


对于所需的非空定义,您可以递归地检查所有元素是否都是非空的。我对此表示怀疑——这是一个有效的JSON。这样的验证器可以为您将JSON解析成的case类生成。您可以递归地检查所有元素是否都是非空的,无论您想要什么非空定义。我对此表示怀疑——这是一个有效的JSON。这样的验证器可以为您将JSON解析成的案例类生成。