首页 > 解决方案 > 如何检查json中的空元素

问题描述

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

我想要一个验证器,避免在 json 中包含具有空值的项目,例如:

[{"elem1":"","elem2":"","elem3":"a"}]

其中前两个元素为空。

标签: javajsonscalavalidation

解决方案


使用播放 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))

推荐阅读