做一个map和字符串的转换,需要导入这些jar包,这是最基本的一些jar包.
经过多方尝试得出结论入下:
首先导入基本包:json-lib-2.2.3-jdk15.jar
如果没有这个jar包,程序是写不起来的.
现在保证了程序编译能够通过,跑一下
出现异常:org/apache/commons/lang/exception/NestableRuntimeException
导入commons-lang-2.3.jar,问题解决.
跑一下:
出现异常:java.lang.ClassNotFoundException: net.sf.ezmorph.Morpher
导入ezmorph-1.0.3.jar,问题解决
跑一下:
出现异常:java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
导入commons-logging-1.1.1.jar,问题解决
跑一下:
出现异常:java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ListOrderedMap
导入commons-collections-3.2.1.jar,问题解决
跑一下:
出现异常:java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBean
导入commons-beanutils-1.7.0.jar,问题解决
跑一下,异常没了.
下面来看看这些东西是怎么转换的.
map转string
Map map=new HashMap();
map.put("name", "思思博士");
map.put("age","25");
JSONObject jsonObject=JSONObject.fromObject(map);
String res=jsonObject.toString();
System.out.println(res);
结果:{"age":"25","name":"思思博士"}
list转string
List list=new ArrayList();
list.add("中华");
list.add("人名");
list.add("共和国");
JSONArray jsonArray=JSONArray.fromObject(list);
String res=jsonArray.toString();
System.out.println(res);
结果:["中华","人名","共和国"]
string转map
String res="{\"age\":\"25\",\"name\":\"思思博士\"}";//或者这样//res="{'age':'25','name':'思思博士'}";
JSONObject jsonObject=JSONObject.fromObject(res);
Map map = (HashMap) JSONObject.toBean(jsonObject, HashMap.class);
System.out.println(map);
System.out.println(map.size());
System.out.println(map.get("name"));
System.out.println(map.getClass().getName());
结果:
{name=思思博士, age=25}
2
思思博士
java.util.HashMap
String 转成我们的自定义类
UserBean.java
packagejson;public classUserBean {privateString name;privateString age;publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}publicString getAge() {returnage;
}public voidsetAge(String age) {this.age =age;
}
}
String userS = "{'name':'思思博士','age':'25'}";
JSONObject obj=JSONObject.fromObject(userS);
UserBean userBean= (UserBean) JSONObject.toBean(obj, UserBean.class);
System.out.println(userBean.getName());
字符串转换成数组
String arrayString="['a','b','ccc']";
JSONArray jsonArray=JSONArray.fromObject(arrayString);
Object[] arr=jsonArray.toArray();
System.out.println(arr.length);
System.out.println(arr[2]);
结果:
3
ccc
json字符串转list
public voidtestParseJsonArray() {//json集合
String jsonString = "[{\"age\":\"13\",\"name\":\"zhangSan\"},{\"age\":\"14\",\"name\":\"liSi\"}]";
JSONArray jsonArray=JSONArray.fromObject(jsonString);//Java集合
List list = (List) jsonArray.toCollection(jsonArray, Employee.class);for(Employee employee : list){
System.out.println(employee);
}
}