- <strong><span style="font-size:18px;">json 与对象 list map 数组之间的转换</span></strong>
- JackSon的工具类
- package JsonUtil;
- import java.io.IOException;
- import java.util.Collection;
- import java.util.Map;
- import org.codehaus.jackson.map.ObjectMapper;
- import org.codehaus.jackson.type.JavaType;
- @SuppressWarnings("all")
- public class JackSonUtil {
- protected static final ObjectMapper mapper = new ObjectMapper();
- /**
- * 如果JSON字符串为Null或"null"字符串,返回Null. 如果JSON字符串为"[]",返回空集合.
- *
- *
- */
- public static <T> T fromJson(String jsonString, Class<T> clazz) {
- if (jsonString == null || jsonString.length() == 0) {
- return null;
- }
- try {
- return mapper.readValue(jsonString, clazz);
- } catch (IOException e) {
- return null;
- }
- }
- /**
- * 如果对象为Null,返回"null". 如果集合为空集合,返回"[]".
- */
- public static String toJson(Object object) {
- try {
- return mapper.writeValueAsString(object);
- } catch (IOException e) {
- return null;
- }
- }
- /**
- * @param jsonStr
- * @param type
- * @return json数据转换成map
- */
- public static Map<?, ?> fromJsonToMap(String jsonStr, JavaType type) {
- if (jsonStr == null || jsonStr.length() == 0) {
- return null;
- }
- try {
- return mapper.readValue(jsonStr, type);
- } catch (IOException e) {
- return null;
- }
- }
- /**
- * @param jsonStr
- * @param type
- * @return json数据转换成list
- */
- public static <T extends Collection> T fromJsonToCollection(String jsonStr, JavaType type) {
- if (jsonStr == null || jsonStr.length() == 0) {
- return null;
- }
- try {
- return (T) mapper.readValue(jsonStr, type);
- } catch (IOException e) {
- return null;
- }
- }
- /**
- * @param jsonStr
- * @param elementClasses
- * @return json数据转换成数组
- */
- public static <T extends Object> T[] fromJsonToArray(String jsonStr, Class<?> elementClasses) {
- if (jsonStr == null || jsonStr.length() == 0) {
- return null;
- }
- try {
- return (T[]) mapper.readValue(jsonStr, elementClasses);
- } catch (IOException e) {
- return null;
- }
- }
- /**
- * 获取泛型的Collection Type
- *
- * @param collectionClass
- * 泛型的Collection
- * @param elementClasses
- * 元素类
- * @return JavaType Java类型
- * @since 1.0
- */
- public static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
- return mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
- }
- }
JackSon 工具类的使用
- package MainTest;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import org.codehaus.jackson.type.JavaType;
- import JsonUtil.JackSonUtil;
- import models.Person;
- public class JsonTest {
- public static void main(String[] args) {
- Person person = new Person("Lucy", 20, "男", "中国");
- Person person1 = new Person("Lucy1", 20, "男", "中国");
- Person person2 = new Person("Lucy2", 20, "男", "中国");
- Person person3 = new Person("Lucy3", 20, "男", "中国");
- System.err.println("一个对象转换成Json字符");
- System.err.println(JackSonUtil.toJson(person));
- List<Object> list = new ArrayList<Object>();
- list.add(person);
- list.add(person1);
- list.add(person2);
- list.add(person3);
- String jsonStr = JackSonUtil.toJson(list);
- System.err.println(" List集合转换成json方法");
- System.err.println(jsonStr);
- System.err.println("Json字符转换成List对象");
- JavaType javaType = JackSonUtil.getCollectionType(ArrayList.class, Person.class);
- List<Person> persons = JackSonUtil.fromJsonToCollection(jsonStr, javaType);
- for (Person p : persons) {
- System.err.print(JackSonUtil.toJson(person) + " ");
- }
- System.err.println("Map集合转换成json方法");
- Map<String, Object> map = new HashMap<String, Object>();
- map.put("学生", person);
- map.put("学生1", person1);
- map.put("学生2", person2);
- map.put("学生3", person3);
- String mapJsonStr = JackSonUtil.toJson(map);
- System.err.println(mapJsonStr);
- System.err.println("Json字符转换成Map对象");
- JavaType javaType1 = JackSonUtil.getCollectionType(Map.class, String.class, Person.class);
- Map<String, Person> personMap = (Map<String, Person>) JackSonUtil.fromJsonToMap(mapJsonStr, javaType1);
- System.err.println(personMap);
- for (Object key : personMap.keySet()) {
- System.err.print("key=" + key + " value=" + JackSonUtil.toJson(personMap.get(key)));
- System.err.println();
- }
- System.err.println("数组与JSON之间的转换");
- Person[] personArray = { person, person1, person2, person3 };
- String arrayStr = JackSonUtil.toJson(personArray);
- System.err.println(arrayStr);
- Person[] personArray1 = (Person[]) JackSonUtil.fromJsonToArray(arrayStr, Person[].class);
- for (Person p : personArray1) {
- System.err.println(JackSonUtil.toJson(p));
- }
- }
- }
一个对象转换成Json字符
{"name":"Lucy","age":20,"sex":"男","address":"中国"}
List集合转换成json方法
[{"name":"Lucy","age":20,"sex":"男","address":"中国"},{"name":"Lucy1","age":20,"sex":"男","address":"中国"},{"name":"Lucy2","age":20,"sex":"男","address":"中国"},{"name":"Lucy3","age":20,"sex":"男","address":"中国"}]
Json字符转换成List对象
{"name":"Lucy","age":20,"sex":"男","address":"中国"} {"name":"Lucy","age":20,"sex":"男","address":"中国"} {"name":"Lucy","age":20,"sex":"男","address":"中国"} {"name":"Lucy","age":20,"sex":"男","address":"中国"} Map集合转换成json方法
{"学生":{"name":"Lucy","age":20,"sex":"男","address":"中国"},"学生2":{"name":"Lucy2","age":20,"sex":"男","address":"中国"},"学生1":{"name":"Lucy1","age":20,"sex":"男","address":"中国"},"学生3":{"name":"Lucy3","age":20,"sex":"男","address":"中国"}}
Json字符转换成Map对象
{学生=models.Person@2d6e8792, 学生2=models.Person@2812cbfa, 学生1=models.Person@2acf57e3, 学生3=models.Person@506e6d5e}
key=学生 value={"name":"Lucy","age":20,"sex":"男","address":"中国"}
key=学生2 value={"name":"Lucy2","age":20,"sex":"男","address":"中国"}
key=学生1 value={"name":"Lucy1","age":20,"sex":"男","address":"中国"}
key=学生3 value={"name":"Lucy3","age":20,"sex":"男","address":"中国"}
数组与JSON之间的转换
[{"name":"Lucy","age":20,"sex":"男","address":"中国"},{"name":"Lucy1","age":20,"sex":"男","address":"中国"},{"name":"Lucy2","age":20,"sex":"男","address":"中国"},{"name":"Lucy3","age":20,"sex":"男","address":"中国"}]
{"name":"Lucy","age":20,"sex":"男","address":"中国"}
{"name":"Lucy1","age":20,"sex":"男","address":"中国"}
{"name":"Lucy2","age":20,"sex":"男","address":"中国"}
{"name":"Lucy3","age":20,"sex":"男","address":"中国"}