如果json包含未知字段,我需要GSON映射器抛出异常。例如,如果我们有POJO,比如
public class MyClass {
String name;
}
和json一样
{
"name": "John",
"age": 30
}
我想得到某种消息,json包含无法反序列化的未知字段(age)。
我知道Jackson mapper中有开箱即用的解决方案,但在我们的项目中,我们已经使用Gson作为映射器好几年了,使用Jackson会导致项目不同部分的冲突和错误,所以对我来说,编写自己的解决方案比使用Jackson更容易。
换句话说,我想知道是否有与Jackson的< code >反序列化功能等效的功能。Gson中的FAIL _ ON _ UNKNOWN _ PROPERTIES 。或者,如果可以使用Gson的反序列化策略而不是使用反射来完成,情况又会如何呢
我相信你不能用Gson自动做到。
我不得不在工作中的一个项目中这样做。我做了以下工作:
Gson GSON = new GsonBuilder().create();
(static final) Map<String, Field> FIELDS = Arrays.stream(MyClass.class.getDeclaredFields())
.collect(Collectors.toMap(Field::getName, Function.identity()));
JsonObject object = (JsonObject) GSON.fromJson(json, JsonObject.class);
List<String> objectProperties = object.entrySet().stream().map(Entry::getKey).collect(Collectors.toList());
List<String> classFieldNames = new ArrayList<>(FIELDS.keySet());
if (!classFieldNames.containsAll(objectProperties)) {
List<String> invalidProperties = new ArrayList<>(objectProperties);
invalidProperties.removeAll(classFieldNames);
throw new RuntimeException("Invalid fields: " + invalidProperties);
}
我正在尝试用gradle gretty插件(gradle版本3.4)构建一个JavaServlet。我依赖于另一个项目数据库提供程序: 1.0-SNAPSHOT(包括与数据库的连接和一些Spring定义...)。当我运行任务“gradle war”时,. war-file与WEB-INF/lib中的所有依赖关系都已正确构建。但是当我尝试从“gradle appstart”开始时,我有以下问题: 错
我在使用: null null 令人惊讶的是,但是toModel方法工作得很好,编译后,我在生成的源代码中看到了下面的内容: 我不知道如何修复这个映射问题。有人能帮忙吗? 下面是我的映射器:
我希望Jackson JSON序列化程序在遇到空属性时失败。 我知道我可以告诉它省略空字段()。但是,另外我想声明 或
我将ireport中的Fieldname作为实体类中的属性名。但我遇到了以下异常。 以下是我的jrxml代码 下面是我的实体类代码: 这是我的控制器类中的代码 这里我在我的实体类中声明为字符串类型的私有变量。所以在我的jrxml中,我给出了与相同的名称。如果我在iReport中单击预览,我也会遇到同样的问题。我使用的是iReport 4.5.0。这里检索包(模型)有一个jpa查询,它检索所有的包,
问题内容: 我的错误输出: 无效的配置对象。已使用与API模式不匹配的配置对象初始化Webpack。-configuration.module具有未知的属性“ loaders”。这些属性是有效的:对象{exprContextCritical?,exprContextRecursive?,exprContextRegExp?,exprContextRequest?,noParse ?、规则?,def