Java 如何检查json中的空元素
在scala/java中是否有任何方法可以评估JSON中的所有项是否都为空 我希望有一个验证器,避免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
[{"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解析成的案例类生成。