如何使用jackson将json数组转换为java hashmap [英] How to convert json array to java hashmap using jackson

查看:1308
本文介绍了如何使用jackson将json数组转换为java hashmap的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用jackson将下面的json数组转换为java hashmap并迭代下面的值:

需要像这样的输出:

 键值
1 sql
2 android
3 mvc

JSON示例:
在此处输入代码

  { 
menu:[
{
1:sql,
2:android,
3:mvc





$ b

如果有人可以分享代码来实现此目的。



感谢您的帮助!

解决方案

这是一个解决方案,它揭示了这个想法:

  public class JacksonSerializer {

public static final String INPUT ={\ n+
\menu\:[\\\
+
{\ n+
\1 \:\sql \,\\\
+
\2 \ :\android \,\\\
+
\3 \:\mvc\\\\
+
} \ n +
] \\\
+
};

public static class MenuItems {

Map< String,String> menu = Maps.newHashMap();
}


public static class MenuItemsDeserializer extends JsonDeserializer< MenuItems> {


@Override
public MenuItems反序列化(org.codehaus.jackson.JsonParser jsonParser,
DeserializationContext deserializationContext)
抛出IOException,JsonProcessingException {

JsonNode node = jsonParser.getCodec()。readTree(jsonParser);

final JsonNode elems = node.getElements()。next()。getElements()。next();
最终地图< String,String> map = Maps.newHashMap();
final Iterator< Map.Entry< String,JsonNode>> it = elems.getFields();
while(it.hasNext()){
final Map.Entry< String,JsonNode> entry = it.next();
map.put(entry.getKey(),entry.getValue()。asText());
}

MenuItems menuItems = new MenuItems();
menuItems.menu = map;
return menuItems;



public static void main(final String [] args)throws IOException {

ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule(SimpleModule,
new Version(1,0,0,null));
module.addDeserializer(MenuItems.class,new MenuItemsDeserializer());
mapper.registerModule(module);

MenuItems menuItems = mapper.readValue(INPUT,MenuItems.class);

}
}


I want to convert below json array to java hashmap using jackson and iterate the values like below:

Need output like this:

key  Value 
1    sql
2    android
3    mvc

JSON Sample: enter code here

{
    "menu": [
        {
            "1": "sql",
            "2": "android",
            "3": "mvc"
        }
    ]
}

It would be really appreciated if someone can share the code to achieve this.

Thanks for your help!

解决方案

Here is a solution that reveals the idea:

public class JacksonSerializer {

    public static final String INPUT = "{\n" +
            "    \"menu\": [\n" +
            "        {\n" +
            "            \"1\": \"sql\",\n" +
            "            \"2\": \"android\",\n" +
            "            \"3\": \"mvc\"\n" +
            "        }\n" +
            "    ]\n" +
            "}";

    public static class MenuItems {

        Map<String, String> menu = Maps.newHashMap();
    }


    public static class MenuItemsDeserializer extends JsonDeserializer<MenuItems> {


        @Override
        public MenuItems deserialize(org.codehaus.jackson.JsonParser jsonParser,
                                               DeserializationContext deserializationContext)
                throws IOException, JsonProcessingException {

            JsonNode node = jsonParser.getCodec().readTree(jsonParser);

            final JsonNode elems = node.getElements().next().getElements().next();
            final Map<String, String> map = Maps.newHashMap();
            final Iterator<Map.Entry<String, JsonNode>> it = elems.getFields();
            while (it.hasNext()) {
                final Map.Entry<String, JsonNode> entry = it.next();
                map.put(entry.getKey(), entry.getValue().asText());
            }                

            final MenuItems menuItems = new MenuItems();
            menuItems.menu = map;
            return menuItems;
        }
    }

    public static void main(final String[] args) throws IOException {

        ObjectMapper mapper = new ObjectMapper();
        SimpleModule module = new SimpleModule("SimpleModule",
                new Version(1,0,0,null));
        module.addDeserializer(MenuItems.class, new MenuItemsDeserializer());
        mapper.registerModule(module);

        MenuItems menuItems = mapper.readValue(INPUT, MenuItems.class);

    }
}

这篇关于如何使用jackson将json数组转换为java hashmap的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆