作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 json 请求,其中几乎没有必填字段。在我的代码中,初始检查是检查必需的字段,如果缺少这些字段,则抛出缺少字段名称的错误。实现这一目标的最佳方法是什么?下面是我的代码
Boolean isRequiredFlag = true;
if(String.isBlank(custReq.partnerId) || String.isBlank(custReq.partnerRepName) || String.isBlank(custReq.name.first) || String.isBlank(custReq.name.last)
|| String.isBlank(custReq.address.addrLine1) || String.isBlank(custReq.address.city) || String.isBlank(custReq.address.state) || String.isBlank(custReq.address.postalCode)
|| String.isBlank(custReq.phones.phone)){
isRequiredFlag = false;
}
上面的 block 有效,但无法获取哪些字段为空。一种可能的解决方案是做很多 if 语句,但如果有人能提出更好的方法来做到这一点,我将非常感激。
最佳答案
一种方法是创建所需字段名称及其值的映射,然后过滤该映射以查找空白字段值:
Map<String, String> requiredFields = new HashMap<String, String>();
requiredFields.put("partnerId", custReq.partnerId);
requiredFields.put("partnerRepName", custReq.partnerRepName);
requiredFields.put("name.first", custReq.name.first);
...
requiredFields.put("phones.phone", custReq.phones.phone);
要过滤 map 并收集具有空值的字段名称(在 Java 8 中):
List<String> missingFieldNames =
requiredFields.entrySet()
.stream()
.filter(entry -> StringUtils.isBlank(entry.getValue()))
.map(entry -> entry.getKey())
.collect(Collectors.toList());
现在您有了缺少的字段名称。并设置标志:
Boolean isRequiredFlag = missingFieldNames.isEmpty() ? true : false;
关于java - 如何删除许多 If block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46592927/
我是一名优秀的程序员,十分优秀!