json序列化 java对象_Json 数据反序列化为Java对象

前言:我们在项目中经常用到的是Json格式的数据,如果是将一个被Jackson转化为JSON数据格式的Java对象进行操作,我们就需要将JSON数据再反序列化为Java对象。

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 BOONYACHENGDU@GMAIL.COM

* @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 List getPointsByJsonString(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>"+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>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>Point(lat,lng)= {lat:34.232013,lng:103.466002}

<:success index>Point(lat,lng)= {lat:34.531939,lng:103.665816}

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2013-08-29 00:12

浏览 11204

评论

1 楼

liuweihug

2014-08-01

json序列化反序列化插件-json2.js 介绍和使用 - 前端编程 - IT工作生活这点事。Just Such So!

http://www.suchso.com/UIweb/json2-js-stringify-parse-serializable-deserialize.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值