引入:fastjson-1.1.36.jar
1.json字符串与java对象之间的转换:
字符串转对象:JSON.parseObject(String text,Class<T> clazz);
对象转字符串:JSON.toJSONString(Object object);
字符串转list:List<A> list = JSON.parseObject(String text,new TypeReference(ArrayList<A>));
引入:json-lib-2.2.3-jdk15.jar
2.JSONObject与字符串和java对象之间的转换:
String jsonString ="{'name':'jack','sex':'men'}";
JSONObject jsonObject = JSONObject.fromObject(jsonString);
Object results = JSONObject.toBean(jsonObject, Person.class);
预先定义好java bean:
- JAVA BEAN:
- public class Person{
- private String name;
- private String sex;
- ......
- }
3.JSONObject可以直接转化为Map对象。
String jsonString ="{'name':'jack','sex':'men'}";
JSONObject jsonObject = JSONObject.fromObject(jsonString);
Map mp = jsonObject;
System.out.println(mp.get("name"));
4.JSON与list、map转换:
String listStr = "[\"apple\",\"orange\"]";
Collection<String> strlist = JSONArray.toCollection(JSONArray.fromObject(listStr));
for (String str : strlist) {
System.out.println(str);
}
String mapStr = "{\"age\":30,\"name\":\"Michael\",\"baby\":[\"Lucy\",\"Lily\"]}";
Map<String, Object> map = (Map) JSONObject.toBean(JSONObject
.fromObject(mapStr), Map.class);
for (Entry<String, Object> entry : map.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
特殊例子:
如何把json的yyyy-MM-dd的转换为Bean中的util.Date类型:
view plaincopy to clipboardprint?
JSONUtils.getMorpherRegistry().registerMorpher(
new DateMorpher(new String[] { "yyyy-MM-dd" }));
String jsonStr = "[{\"name\": \"husband\", \"age\": \"26\", \"born\": \"1984-01-12\"},{\"name\": \"wife\", \"age\": \"20\", \"born\": \"1990-05-01\"}]";
Collection<JsonBean> list = JSONArray.toCollection(JSONArray.fromObject(jsonStr), JsonBean.class);
//DateUtil.getFormatDate(date,fmtstr)日期转字符串这里不再写代码了
for (JsonBean o : list) {
System.out.println(DateUtil.getFormatDate(o.getBorn(), "yyyy-MM-dd"));
}