需要jar包:jackson-core-2.6.0.jar,jackson-databind-2.6.0.jar,jackson-annotations-2.6.0.jar
1.JSON String to Map
- String json = "{\"name\":\"zitong\", \"age\":\"26\"}";
- Map<String, String> map = new HashMap<String, String>();
- ObjectMapper mapper = new ObjectMapper();
- try{
- map = mapper.readValue(json, new TypeReference<HashMap<String,String>>(){});
- System.out.println(map);
- }catch(Exception e){
- e.printStackTrace();
- }
2.Map to JSON String
- try{
- ObjectMapper mapper = new ObjectMapper();
- String json = "";
- Map<String, String> map = new HashMap<String,String>();
- map.put("name", "zitong");
- map.put("age", "26");
- json = mapper.writeValueAsString(map);
- System.out.println(json);
- }catch(Exception e){
- e.printStackTrace();
- }
3.Map to JSON File
- ObjectMapper mapper = new ObjectMapper();
- Map<String, Object> map = new HashMap<String, Object>();
- map.put("name", "zitong");
- map.put("age", 29);
- List<Object> list = new ArrayList<Object>();
- list.add("music");
- list.add("football");
- map.put("hobby", list);
- try {
- mapper.writeValue(new File("F:/user.json"), map);
- } catch (Exception e) {
- e.printStackTrace();
- }
4.JSON File To Map
- try{
- ObjectMapper mapper = new ObjectMapper();
- Map<String, Object> map = mapper.readValue(new File("F:/user.json"),newTypeReference<Map<String, Object>>(){});
- System.out.println("name: " + map.get("name"));
- System.out.println("age: " + map.get("age"));
- @SuppressWarnings("unchecked")
- List<String> list = (List<String>)map.get("hobby");
- System.out.print("hobby: ");
- for(String str : list){
- System.out.print(str+ " ");
- }
- }catch(Exception e){
- e.printStackTrace();
- }
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包可到网上下载,也可以用下面提供的!