JSON和Map相互转换

需要jar包:jackson-core-2.6.0.jar,jackson-databind-2.6.0.jar,jackson-annotations-2.6.0.jar

 

1.JSON String to Map

  1. String json = "{\"name\":\"zitong\", \"age\":\"26\"}";
  2. Map<String, String> map = new HashMap<String, String>();
  3. ObjectMapper mapper = new ObjectMapper();
  4.  
  5. try{
  6. map = mapper.readValue(json, new TypeReference<HashMap<String,String>>(){});
  7. System.out.println(map);
  8. }catch(Exception e){
  9. e.printStackTrace();
  10. }

 

2.Map to JSON String

  1. try{
  2. ObjectMapper mapper = new ObjectMapper();
  3. String json = "";
  4.  
  5. Map<String, String> map = new HashMap<String,String>();
  6. map.put("name""zitong");
  7. map.put("age""26");
  8.  
  9. json = mapper.writeValueAsString(map);
  10.  
  11. System.out.println(json);
  12. }catch(Exception e){
  13. e.printStackTrace();
  14. }

 

3.Map to JSON File

 

  1. ObjectMapper mapper = new ObjectMapper();
  2. Map<String, Object> map = new HashMap<String, Object>();
  3. map.put("name""zitong");
  4. map.put("age"29);
  5.  
  6. List<Object> list = new ArrayList<Object>();
  7. list.add("music");
  8. list.add("football");
  9.  
  10. map.put("hobby", list);
  11.  
  12. try {
  13. mapper.writeValue(new File("F:/user.json"), map);
  14. catch (Exception e) {
  15. e.printStackTrace();
  16. }

 

4.JSON File To Map

  1. try{
  2. ObjectMapper mapper = new ObjectMapper();
  3.  
  4. Map<String, Object> map = mapper.readValue(new File("F:/user.json"),newTypeReference<Map<String, Object>>(){});
  5.  
  6. System.out.println("name: " + map.get("name"));
  7. System.out.println("age: " + map.get("age"));
  8.  
  9. @SuppressWarnings("unchecked")
  10. List<String> list = (List<String>)map.get("hobby");
  11. System.out.print("hobby: ");
  12. for(String str : list){
  13. System.out.print(str+ " ");
  14. }
  15.  
  16. }catch(Exception e){
  17. e.printStackTrace();
  18. }

5.java转换是json需要的jar包导致的问题

(一),在本项目的WebContent/WEB-INF-lib下有没有导入json所需要的jar,

(二),jar包的版本也会导致类似的问题,不如jar包过早或最新版本都会导致。

              

             我用的是: commons-lang3-3.1.jar  出现异常:

                java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException

 

                 可以看出是因为缺少jar包,但是很明显我已经导入了,为什么还会报这个错呢?

我之前用的是这个包 commons-lang3-3.1.jar,

把他换成了这个包commons-lang-2.4.jar就好了。

还有的原因是应为导入的jar包的目录不相同。

 

报错了差哪个包,对应去找,感觉包导入了还报错,打开包的目录看看有不有那个类,没有就换别的版本看看,lang3与lang目录有改变,所以会有错误。

     json 共有6个jar包,

 

以下是网上搜的,不想看可以忽略:

如果有类似错误可以参考,版本不同,记得看下里面包名是否和报错信息对应的上。

 

commons-beanutils-1.8.0.jar不加这个包 
java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBean 
commons-collections.jar 不加这个包 
java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ListOrderedMap
commons-lang-2.4.jar不加这个包 
java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException
commons-logging-1.1.1.jar不加这个包 
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 
ezmorph-1.0.4.jar不加这个包 
java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher 
json-lib-2.3-jdk15.jar不加这个包 
java.lang.NoClassDefFoundError: net/sf/json/JSONObject 
相应jar包可到网上下载,也可以用下面提供的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值