Json , String, Object , List 之间的相互转换
2014-10-31 21:45
561 查看
首先定义了一个Filter类
又创建了一个FilterWithJsonTest 类, 来实现json串和Filter, List 之间的相互转换
执行后, 抛出异常:
原因是, 在Filter类中没有提供无参数的构造函数, 加上后,执行成功:
JsonConvertToObject function result: Filter [name=continent, operator=equals, value=EU]
ObjectConvertToJson function result: {"name":"country","operator":"not equal","value":"CHINA"}
ListConvertToJson function result: [{"name":"continent","operator":"equals","value":"EUROPE"},{"name":"country","operator":"equals","value":"JAPAN"},{"name":"city","operator":"equals","value":"AnShan"}]
JsonConvertToList function result:
each filter :Filter [name=city, operator=greater than, value=GuangZhou]
each filter :Filter [name=country, operator=less than, value=KOREA]
each filter :Filter [name=city, operator=equals, value=DALIAN]
JsonConverttoArrayStr:
each string: apple
each string: pear
package com.xin.map.bean; public class Filter { private String name; private String operator; private String value; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getOperator() { return operator; } public void setOperator(String operator) { this.operator = operator; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public String toString() { return "Filter [name=" + name + ", operator=" + operator + ", value=" + value + "]"; } public Filter(String name, String operator, String value) { this.name = name; this.operator = operator; this.value = value; } }
又创建了一个FilterWithJsonTest 类, 来实现json串和Filter, List 之间的相互转换
package com.xin.map.bean; import java.util.ArrayList; import java.util.List; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.type.TypeReference; public class FilterWithJsonTest { static ObjectMapper mapper = new ObjectMapper(); private static String jsonFilter; private static Filter objFilter ; private static List<Filter> filterList = new ArrayList<Filter>(); private static String jsonList; //non key-value json string private static String strJson; public static void main(String[] args) { jsonFilter = "{\"name\":\"continent\",\"operator\":\"equals\",\"value\":\"EU\"}"; objFilter = new Filter("country", "not equal", "CHINA"); filterList.add(new Filter("continent", "equals", "EUROPE")); filterList.add(new Filter("country", "equals", "JAPAN")); filterList.add(new Filter("city", "equals", "AnShan")); jsonList = "[{\"name\":\"city\",\"operator\":\"greater than\",\"value\":\"GuangZhou\"}," + "{\"name\":\"country\",\"operator\":\"less than\",\"value\":\"KOREA\"}," + "{\"name\":\"city\",\"operator\":\"equals\",\"value\":\"DALIAN\"}]"; strJson = "[\"apple\", \"pear\"]"; JsonConvertToObject(jsonFilter); ObjectConvertToJson(objFilter); ListConvertToJson(filterList); JsonConvertToList(jsonList); JsonConvertToArrayStr(strJson); } private static void JsonConvertToObject(String jsonStr) { try { Filter f = mapper.readValue(jsonStr, Filter.class); System.out.println("JsonConvertToObject function result: " + f); } catch(Exception e) { e.printStackTrace(); } } private static void ObjectConvertToJson(Filter f) { try { String strResult = mapper.writeValueAsString(f); System.out.println("ObjectConvertToJson function result: " + strResult); } catch (Exception e) { e.printStackTrace(); } } private static void ListConvertToJson(List<Filter> filterList) { try { String arrJson = mapper.writeValueAsString(filterList); System.out.println("ListConvertToJson function result: " + arrJson); } catch(Exception e) { e.printStackTrace(); } } private static void JsonConvertToList(String arrJson) { try { List<Filter> filtersResult = mapper.readValue(jsonList, new TypeReference<List<Filter>>(){}); System.out.println("JsonConvertToList function result: "); for(Filter one : filtersResult) { System.out.println("each filter :" + one); } } catch(Exception e) { e.printStackTrace(); } } //Json string convert to string array private static void JsonConvertToArrayStr(String strJson) { try { List<String> arrString = mapper.readValue(strJson, new TypeReference<List<String>>(){}); System.out.println("JsonConverttoArrayStr:"); for(String str : arrString) { System.out.println("each string: " + str); } } catch(Exception e) { e.printStackTrace(); } } }
执行后, 抛出异常:
org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [simple type, class com.xin.map.bean.Filter]: can not instantiate from JSON object (need to add/enable type information?) at [Source: java.io.StringReader@56bbf64f; line: 1, column: 2] at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163) at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObjectUsingNonDefault(BeanDeserializer.java:740) at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:683) at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580) at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2723) at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1854) at com.xin.map.bean.FilterWithJsonTest.JsonConvertToObject(FilterWithJsonTest.java:45) at com.xin.map.bean.FilterWithJsonTest.main(FilterWithJsonTest.java:34)
原因是, 在Filter类中没有提供无参数的构造函数, 加上后,执行成功:
JsonConvertToObject function result: Filter [name=continent, operator=equals, value=EU]
ObjectConvertToJson function result: {"name":"country","operator":"not equal","value":"CHINA"}
ListConvertToJson function result: [{"name":"continent","operator":"equals","value":"EUROPE"},{"name":"country","operator":"equals","value":"JAPAN"},{"name":"city","operator":"equals","value":"AnShan"}]
JsonConvertToList function result:
each filter :Filter [name=city, operator=greater than, value=GuangZhou]
each filter :Filter [name=country, operator=less than, value=KOREA]
each filter :Filter [name=city, operator=equals, value=DALIAN]
JsonConverttoArrayStr:
each string: apple
each string: pear
相关文章推荐
- Java object 和 json string之间的相互转换
- java中JSONArray、JSONObject、List、String之间的转换
- 20140704-C#object/List<object>与json、xml之间的相互转换
- C#List<string>和string[]之间的相互转换
- JS json object 与 string 相互转换
- json <--->List集合,实体类 之间的相互转换
- C#List<string>和string[]之间的相互转换
- JSON的String字符串与Java的List列表对象的相互转换
- Json-smart实现JSONObject、JSONString、Beans之间的转换
- JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
- JS json object 与 string 相互转换
- java中json包的使用以及字符串,map,list,自定义对象之间的相互转换
- C#List<string>和string[]之间的相互转换
- string(有格式)、string[]、List<string>之间相互转换
- json和object之间相互转换
- List<string>和string[]之间的相互转换
- java解析json与map,list相互之间的转换
- C#中List〈string〉和string[]数组之间的相互转换
- json数据格式和object对象之间相互转换
- Android小问题:String转换Json,以及org.json.JSONObject与org.json.JSONArray相互添加