首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jackson JsonParser readValueAs Multimap

Jackson JsonParser readValueAs Multimap
EN

Stack Overflow用户
提问于 2016-07-26 05:42:35
回答 2查看 1.3K关注 0票数 0

我正在尝试使用StdDeserializer<T>实现一个自定义的反序列化程序。在我的deserialize(JsonParser, DeserializationContext)方法中,我尝试使用JsonParser读取一个Multimap,假设JSON字符串为{ "toMap": { "a": "b", "a": "c" } }

假设我处于字段名为"toMap"的位置,我尝试这样做:Multimap<String, Object> rawConditions = jsonParser.readValuesAs(new TypeReference<LinkedListMultimap<String, Object>>() {});,但它导致了编译错误。它说它们具有不兼容的类型- Multimap<String, Object>是必需的,但它正在查找Iterator<Object>

EN

回答 2

Stack Overflow用户

发布于 2016-07-26 20:12:15

Guava的Multimap<K, V>大致等同于Map<K, Collection<V>>,但是在您的数据({ "toMap": { "a": "b", "a": "c" } })中有Map<K, Map<V, X>>,当然,它不能反序列化为Multimap。如果您坚持使用Guava,您可以将其反序列化为Table。当然,我假设您使用的是jackson-datatypes-collections,并且在ObjectMapper中注册了GuavaModule

编辑:如果您想将"toMap“反序列化为多映射(即{ "a": "b", "a": "c" }),它也不是有效的Multimap<K, V> (如果您愿意,也可以是Map<K, Collection<V>> ),而是Map<K, V>

要成为有效的Multimap.,

  • it具有重复的密钥"a"
  • it应该类似于{ "a": ["b"], "x": ["c"] }

尝试将其反序列化为Map<String, String>

票数 0
EN

Stack Overflow用户

发布于 2016-07-26 22:32:49

我不知道有任何内置的多映射转换器,但是假设您在示例中寻找的多映射是{ "a": "b", "a": "c" } (没有"toMap"),并且您希望它转换为类似{"a": ["b", "c"]}的东西,您可以通过逐个令牌解析json令牌并将其添加到您的多映射来编写自己的反序列化程序。示例:

代码语言:javascript
复制
public class CustomDeserializer extends JsonDeserializer<Multimap<String, String>> {

    @Override
    public Multimap<String, String> deserialize(JsonParser jp, DeserializationContext dc)
            throws IOException {
        Multimap<String, String> multimap = LinkedListMultimap.create();
        JsonToken currentToken = null;
        while ((currentToken = jp.nextValue()) != null) {
            switch (currentToken) {
                case VALUE_STRING:
                    multimap.put(jp.getCurrentName(), jp.getText());
                    break;
            }
        }
        return multimap;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38577885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档