我无法让JsonDeserializer处理空值。我正在读取一个json文件,其中我的记录类型只有四个值:Case 1、Case 2、*或null。JsonDeserializer可以很好地处理前3个。但是,遇到null时它似乎什么也做不了。根据代码(请参阅下面我的自定义反序列化器),我希望该行
text = StringUtils.upperCase(jsonParser.getText());
要么抛出一个异常(从而将text = "NULL "赋值)。或者,根据返回一个空字符串
if (StringUtils.isBlank(text))
同样,我在这里指定text =“NULL”。然而,这两种情况都没有发生。似乎空值根本没有被处理(这是不可能的,对吗?).我的
System.out.println("TEXT: " + text);
始终打印案例 1、案例 2 或 *,但从不打印 NULL。从字面上看,它似乎跳过了文件中的空条目,或者至少没有以我的代码中考虑的任何方式处理它。如有任何想法,我将不胜感激。谢谢!!
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import my.local.CustomValue;
import org.apache.commons.lang3.StringUtils;
import java.io.IOException;
public class CustomDeserializer extends JsonDeserializer<CustomValue> {
@Override
public CustomValue deserialize(final JsonParser jsonParser, final DeserializationContext deserializationContext) {
CustomValue retVal = null;
// Get the text from the JSON
String text = null;
try {
text = StringUtils.upperCase(jsonParser.getText());
} catch (IOException e) {
e.printStackTrace();
text = "NULL";
}
System.out.println("TEXT: " + text);
// If the text is empty or null, make it NULL
if (StringUtils.isBlank(text)) {
text = "NULL";
}
// Based on the text value, return the appropriate retVal
switch (text) {
case "Case 1":
retVal = CustomValue.CASE1;
break;
case "Case 2":
retVal = CustomValue.CASE2;
break;
case "NULL":
retVal = CustomValue.NULL;
break;
case "*":
retVal = CustomValue.WILDCARD;
break;
default:
retVal = CustomValue.NULL;
break;
}
return retVal;
}
}
JsonDeserializer.deserialize的JavaDoc声明如下:
"...请注意,JSON null literal从不调用此方法,因此反序列化程序不需要(也不应该)检查它。
Jackson自己处理< code>null值,不会调用自定义反序列化器的< code>deserialize。若要自定义为< code>null返回的值,必须重写反序列化程序的< code>getNullValue方法。
在运行中,模板中的 空白 处理在某种程度上来说是纠缠所有模板引擎的一个问题。 我们来看这个模板。我已经用颜色标记了模板中的组件: 文本, 插值, FTL 标签.。 使用 [BR] 来想象 换行。 <p>List of users:[BR] <#assign users = [{"name":"Joe", "hidden":false},[BR] {
问题内容: 我有一个包含3列的表格:c1,c2和c3。我想编写一条select语句,以便如果c1和c2都为空,则显示c3,否则显示c1。 在上述情况下,编写select语句的最佳方法是什么? 问题答案: 使用案例 使用NVL2 或者 使用解码 易读性和易用性CASE胜出。
以下代码正在为空的属性抛出NPE。class Person有属性:string:name,Integer:age,Integer:salary此处可以为空。我想创建一个工资列表。 在这里,我必须在结果列表中保留空值。null不能替换为0。
white-space属性用来设置文本内空白符(如空格、回车、tab字符等)的处理方式,可选值有 normal | pre | nowrap | pre-wrap | pre-line,默认值为 normal。该属性出自 CSS1,在 CSS 2.1中新增了属性值 pre-wrap 和 pre-line。不同取值的含义见表 3‑6: 表 3‑6 white-space属性的取值及含义 属性值 含义
我使用的是Spring批处理4.3.2。.我正在写测试,发现了一些奇怪的东西,签出下面的代码。 对于相同的jobexecutions,我会得到不同的“getStepExecutions()”结果,这取决于我获取它们的方式。你知道为什么会这样吗?还是我做错了什么? 干杯T
我是Apache POI的新手,我需要根据数据库的内容编写excel文件。但是,当DB中有一个空/空字段时,会为该特定字段抛出一个空指针异常。我一直在读关于缺失的小区政策,这是解决这个问题的最好方法吗?为了简洁,我省略了很多代码,但下面是关键部分。例如,如果DB中的actualAmountReturned为空,则抛出一个NPE。