1、实体对象
package com.boonya.gps; import java.io.Serializable; import org.codehaus.jackson.annotate.JsonProperty; public class Point implements Serializable{ private static final long serialVersionUID = -8359918523259373062L; private double lat; private double lng; public double getLat() { return lat; } public Point(@JsonProperty("lat") double lat,@JsonProperty("lng") double lng) { this.lat = lat; this.lng = lng; } public void setLat(double lat) { this.lat = lat; } public double getLng() { return lng; } public void setLng(double lng) { this.lng = lng; } @Override public String toString() { return "Point(lat,lng)="+" {lat:"+lat+","+"lng:"+lng+"}"; } }
2、实现JSON数据反序列化为Java对象
package com.boonya.gps; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.JsonNode; import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.JsonProcessingException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.type.TypeReference; /** * JSON数据反序列化为Java对象或对象集合 * @author [email protected] * @date 2013-8-28 */ public class JSONSeriaToObject { /** * 对象转JSON * @param obj * @return */ public String getJsonFromObject(Object obj){ ObjectMapper om = new ObjectMapper(); try { return om.writeValueAsString(obj); } catch (JsonGenerationException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return ""; } /** * JSON发序列化为Java对象 * @param jsonStr * @return */ public Point getPointByJsonString(String jsonStr){ Point point =null; ObjectMapper om = new ObjectMapper(); try { JsonNode node=om.readTree(jsonStr); point= (Point) om.readValue(node.toString(),Point.class); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (JsonGenerationException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("<:success single point:>"+point.toString()); return point; } /** * 拼接Json数据的字符串转化为标准Json格式字符串 * @param str * @return */ public String getJsonNodeStringByString(String str){ ObjectMapper om = new ObjectMapper(); try { JsonNode node=om.readTree(str); return node.toString(); } catch (JsonProcessingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return ""; } /** * JSON发序列化为Java对象集合 * @param jsonStr * @return */ @SuppressWarnings("unchecked") public ListgetPointsByJsonString(String jsonStr){ List points = new ArrayList (); ObjectMapper om = new ObjectMapper(); try { JsonNode node=om.readTree(jsonStr); points= (List ) om.readValue(node.toString(), new TypeReference >() {}); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (JsonGenerationException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } for (int i = 0; i < points.size(); i++) { System.out.println("<:success index "+i+":>"+points.get(i).toString()); } return points; } /** * JSON数据反序列化为Java对象的测试入口 * @param args * @throws JsonGenerationException * @throws JsonMappingException * @throws IOException */ public static void main(String[] args) throws JsonGenerationException,JsonMappingException, IOException { JSONSeriaToObject jsto=new JSONSeriaToObject(); //原始数据格式 System.out.println("----------------------------------Jackson JSON(list
) to Java Object-----------------------------"); List points = new ArrayList (); points.add(new Point(34.2332,104.46664)); String json=jsto.getJsonFromObject(points); System.out.println(json); //JSON序列化Java对象 jsto.getPointsByJsonString(json); System.out.println("----------------------------------Jackson JSON(T) to Java Object-----------------------------"); Point point=new Point(34.5332,104.76664); String json2=jsto.getJsonFromObject(point); System.out.println(json2); //JSON序列化Java对象 jsto.getPointByJsonString(json2); //JSON序列化为Java对象 System.out.println("----------------------------------Ping string JSON to Java Object-----------------------------"); String latlngs =new String("[{\"lat\":34.232013,\"lng\":103.466002},{\"lat\":34.531939,\"lng\":103.665816}]"); //经测试以下数据若调用getJsonFromObject是不行的会产生异常 String json3=jsto.getJsonNodeStringByString(latlngs); System.out.println(json3); //JSON序列化Java对象 jsto.getPointsByJsonString(json3); } }
3、打印结果
----------------------------------Jackson JSON(list) to Java Object----------------------------- [{"lat":34.2332,"lng":104.46664}] <:success index 0:>Point(lat,lng)= {lat:34.2332,lng:104.46664} ----------------------------------Jackson JSON(T) to Java Object----------------------------- {"lat":34.5332,"lng":104.76664} <:success single point:>Point(lat,lng)= {lat:34.5332,lng:104.76664} ----------------------------------Ping string JSON to Java Object----------------------------- [{"lat":34.232013,"lng":103.466002},{"lat":34.531939,"lng":103.665816}] <:success index 0:>Point(lat,lng)= {lat:34.232013,lng:103.466002} <:success index 1:>Point(lat,lng)= {lat:34.531939,lng:103.665816}