我有一个ServerEndpoint,它将累加不同的JSON格式。由于每个消息类型只允许一个消息处理程序,因此我的一个解码器必须将消息转换为相应的Java对象。
在我的解码器中,我试图使用ObjectMapper类将累犯的消息转换为子类或子类(这会产生相同的接口)。ObjectMapper类有一个readValue方法,它需要我试图将json映射到的类型,当它不能转换为指定的类型时,它将抛出异常。
@Override
public Message decode(String message) throws DecodeException {
ObjectMapper mapper = new ObjectMapper();
try {
SubclassA obj = mapper.readValue(message, SubclassA .class);
return obj;
} catch (IOException e) {
}
try {
SubclassB obj = mapper.readValue(message, SubclassB .class);
return obj;
} catch (IOException e) {
}
throw new DecodeException(message, "Failed to decode message.");
}
使用Jackson,可以为父对象声明子类型。您的Json将包含@type with和子类型的名称,请看这篇文章,将Json with Jackson反序列化为多态类型--一个完整的示例给了我一个编译错误
我试图想出一个好的解决方案来将字符串转换为json格式,但我不知道它是否足够好。 我想我可能会使用str.replace from(to{,并在}{之间插入逗号,但我如何找到要插入的索引?“”代表Name、Author、fileSize呢?在转换为可读的json字符串之后,我可以序列化为json(由GSON/Jackson)。
问题内容: 我正在尝试将布尔值转换为字符串类型… 要么 以上哪一项效率更高? 问题答案: 我认为它们之间不会有明显的性能差异,但是我更喜欢第一种方法。 如果您有参考,则为时抛出。由于引用在传递给方法之前已取消装箱。 同时,如源代码所示,method进行显式检查: 只需测试以下代码: 对于原始布尔值,没有区别。
问题内容: 我想将Javascript对象编码为JSON字符串,但遇到了很多困难。 对象看起来像这样 我想将其放入JSON字符串以将其放入ajax请求中。 你明白了。不管我做什么,都行不通。所有JSON编码器(如json2等)都会产生 好吧,那对我没有帮助。基本上我想拥有类似php 函数的功能。 问题答案: 除非定义了变量,否则可能是造成您麻烦的原因。这样的事情会做你想要的: 您也可以一次完成所有
问题内容: 我一直在寻找与将JSON字符串转换为Java对象有关的示例,但没有找到任何好的示例。我发现的那个曾经真的很基础,却没有真正处理复杂的JSON字符串。 我正在制作一个使用谷歌翻译API将字符串从英语翻译成不同语言的应用程序。Google的查询回应是…以下文字采用JSON格式, 到目前为止,我的方法是使用GSON API,但实际上,我被该如何处理这个复杂的结果并创建Java对象所困扰? 我
问题内容: 我正在使用restTemplate向servlet发出请求,该servlet返回json中对象的非常简单的表示形式。 我有一个包含这两个字段的DTO以及相应的设置器和获取器。我想知道的是如何使用json响应创建对象,而不必“解析”响应。 问题答案: 我个人会推荐杰克逊。它相当轻巧,速度非常快,只需要很少的配置。这是反序列化的示例:
问题内容: 串联String对象列表的最佳方法是什么?我正在考虑这样做: 我以某种方式发现这比使用StringBuilder / StringBuffer方法更整洁。 有什么想法/意见吗? 问题答案: 您的方法取决于Java的ArrayList#toString()实现。 尽管实现是用Java API记录的,并且不太可能更改,但仍有可能实现。自己实现这一点要可靠得多(循环,StringBuilde