- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我需要像这样反序列化 Json:
{
"arrayObj1":[
{
"type":"t1",
"value":[
{
"value1":"a"
},
{
"value2":"b"
}
],
"otherInfo":"abc"
}
]
}
这就是我尝试做的事情:
public class ClassA{
private ArrayObj1[] arrayObj1;}
然后...
public class ArrayObj1 extends Value{
private String type;
private Value [] value;
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXTERNAL_PROPERTY,
property = "type")
@JsonSubTypes(value={
@JsonSubTypes.Type(value = T1.class, name = "t1")
})
public void setValue (Value [] value){
this.value = value;
}
}
还有...
public abstract class Value {}
这是我得到的错误:com.fasterxml.jackson.databind.JsonMappingException:意外的 token (START_OBJECT),预期的START_ARRAY:需要JSON数组来包含类的As.WRAPPER_ARRAY类型信息...等
如何处理这个问题?谢谢。
编辑:这就是我反序列化的方式:
public ClassA getObj (String jsonString) {
ClassA obj = null;
try {
obj = new ObjectMapper().readValue(jsonString, ClassA.class);
} catch (IOException e) {
e.printStackTrace();
}
return obj;
}
完整错误是:
com.fasterxml.jackson.databind.JsonMappingException: Unexpected token (START_OBJECT), expected START_ARRAY: need JSON Array to contain As.WRAPPER_ARRAY type information for class .Value at [Source: java.io.StringReader@4317b868; line: 1, column: 496] (through reference chain: .ClassA["arrayObj1"]->.ArrayObj1["value"])
最佳答案
考虑到您使用的结构,您实际上需要多一级类来包含外部类型 ID。所以像这样:
public class ClassA {
private ValueWrapper[] arrayObj1;
}
public class ValueWrapper {
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXTERNAL_PROPERTY,
property = "type")
@JsonSubTypes(value={
@JsonSubTypes.Type(value = T1.class, name = "t1")
}
public Value value;
public String otherInfo;
// or use getters/setters in addition; left as fields for brevity
}
public abstract class Value { ... }
)
但是,更仔细地查看您的 JSON,实际上只有当您的值是 POJO 时,这才有效。如果假设类型适用于 value
数组的所有元素,则没有自动方法可以做到这一点。不幸的是,您需要手动处理多态类型。
关于java - Jackson 多态反序列化预计为 START_ARRAY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26251486/
我目前正在使用协卷积层来训练神经网络,但在向其提供输入和输出维度时似乎存在一些问题。 输入由 (x,2050) 组成输出为 (x,13)因此,对于每行 2050 列,应创建一个包含 13 个元素的数组
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我有以下内容: public String searchRecipes( String searchString, int pageNumber ) throws Exception {
现在,在任何人链接这篇文章之前: JSLint : Expected '!!' and instead saw '?' 我想解释一下,我想我明白为什么 jslint 给我这个错误,但是我不确定如何修改
我正在尝试远程登录到 Cisco 路由器并使用 pexpect 发出命令。它的工作,但 sendline() 在输出中重复。即使在使用 setecho 为 False 之后。代码是: ''' Crea
我写了一个脚本从vsql中选择: LOAD 'sql://{select * from sandesh.insights_voice_day WHERE Observation_date BE
这个问题在这里已经有了答案: Android - How to achieve setOnClickListener in Kotlin? (32 个回答) 去年关闭。 我正在尝试使此切换按钮起作用-
我想在两个类之间传递一个值,但出现以下错误: Syntax error on token ";", , expected when initializing called value from ano
我使用 MySQL 5.5 ,我的表有 6 列,数据类型为 int 、varchar 、datetime 。我为 Id (int) 列创建索引。如果我希望基于 Id 列的条件查询始终保持响应时间低于
你好社区我正在做一个简单的应用程序,用户可以注册(作为新用户),所以我试图用我的 Usercontroller 创建一个新用户: class UserController :new end
我正在尝试移植 bunny到 armv7h,它使用了一些我在转换为 asm 时遇到问题的 x86 asm 东西。 static __inline__ void atomic_inc(volatile
我一直在尝试向 https://americas-uapi.copy-webservices.travelport.com/B2BGateway/connect/uAPI/SystemService
以 one 作为参数调用 sleep 的预期持续时间是多少?它是一些不超过 1 秒的随机时间吗?它是某个至少为一秒的随机时间吗? 场景: 开发人员 A 编写代码,使用输出设备按顺序执行某些步骤。代码发
我正在尝试完成有关 Spring Boot 的教程,我目前在 JPA 部分,遇到了一个我无法解决的问题。我目前所处的位置是我已经构建了实体,我已经获得了 DB(H2 数据库)所需的所有依赖项,我已经构
我有如下代码,它检查我的命名函数是否已使用某些参数调用: const wrapper = mount(); let params = new URLSearchParams();
我正在使用Facebook Audience Network通过Android应用程序获利。 我11月份的估算收入大于$ 150,但即使到下个月的12月5日,在“支出”部分的“估算的支出”中仍然“未找
我试图在 Google 跟踪代码管理器中保存此自定义 Javascript 变量,但每次都返回此错误: sendinblue.identify('$_POST['_username']',{ '
该程序可在此处获取:http://ideone.com/P1c15J 这里简要介绍一下它的作用: 声明一个字符串ptr。将此指针地址转换为小端地址并将这些字节存储在 char[] adr 中。打印出来
我想使用 DynamicTimeWarping (DTW) 的输出进行分类。事实证明,动态时间扭曲算法的输出仍然需要进行后处理。作为时间对齐过程的一部分,数据 A 的一些单个数据点将被映射到数据 B
我正在尝试使用来自 GUI 的 Weka CSVLoader 将 CSV 转换为 ARFF。在选项中,我将字符串的包围字符设置为 " ,虽然我的文件中没有引号。 我收到以下错误: weka.core.
我是一名优秀的程序员,十分优秀!