- 浏览: 801434 次
- 性别:
- 来自: 成都
-
文章分类
- 全部博客 (151)
- Java-Basic (25)
- Java-NIO (3)
- Java-Mybatis (4)
- Java-Web (15)
- DB-oracle (18)
- DB-mysql (29)
- DB-sqlserver (4)
- DB-postgresql (2)
- DB-SQLite (1)
- DB-H2 (6)
- Tool-Flex (1)
- Tool-Ftp (3)
- Tool-Maven (5)
- Netlink (2)
- Web-CSS (3)
- Web-UI (1)
- Web-JavaScript (8)
- NoSQL (3)
- Mina (2)
- TCPUDP (2)
- SEO (2)
- Network (6)
- DataStructure (1)
- Website-test (1)
- Tool-Excel (1)
- Java-Concurrent (2)
- 前辈指点 (0)
- Eclipse plugins (1)
- DB-NoSQL (1)
最新评论
-
18322696278:
My97DatePicker控件显示时分秒 -
dllhenu:
你好,我让ol加载tiptip,但是tiptip没有在点所在的 ...
OpenLayers下使用Jquery tooltip(Qtip)让要素信息自动显示或隐藏 -
boonya:
你所说的是网页上选择文件路径吧,用ServletFileUpl ...
Apache提供的FTP文件上传下载 -
淡然若水:
我也是用这种方法啊。。。但是FileInputStream i ...
Apache提供的FTP文件上传下载 -
liuweihug:
json序列化反序列化插件-json2.js 介绍和使用 - ...
Json 数据反序列化为Java对象
前言:我们在项目中经常用到的是Json格式的数据,如果是将一个被Jackson转化为JSON数据格式的Java对象进行操作,我们就需要将JSON数据再反序列化为Java对象。
1、实体对象
2、实现JSON数据反序列化为Java对象
3、打印结果
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<Point> getPointsByJsonString(String jsonStr){ List<Point> points = new ArrayList<Point>(); ObjectMapper om = new ObjectMapper(); try { JsonNode node=om.readTree(jsonStr); points= (List<Point>) om.readValue(node.toString(), new TypeReference<List<Point>>() {}); } 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<T>) to Java Object-----------------------------"); List<Point> points = new ArrayList<Point>(); 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<T>) 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}
评论
1 楼
liuweihug
2014-08-01
json序列化反序列化插件-json2.js 介绍和使用 - 前端编程 - IT工作生活这点事。Just Such So!
http://www.suchso.com/UIweb/json2-js-stringify-parse-serializable-deserialize.html
http://www.suchso.com/UIweb/json2-js-stringify-parse-serializable-deserialize.html
发表评论
-
cache4jJava对象缓存使用示例
2013-10-28 18:16 01、下载cache4j http://source ... -
Java DES加密工具
2013-10-16 11:19 25361、DES算法的原理 DES 使用一个 56 位的密钥以及附加 ... -
BeanUtils实现对Java对象的拷贝
2013-08-06 17:26 9111场景描述:两个对象字段一样,怎么简便地赋值呢?假设有两个实体类 ... -
Jackson时间格式及属性忽略
2013-05-17 13:16 15421、Date时间格式 当使用jackson在处理时间时,默认是 ... -
两种将Java对象转成JSON格式的方式
2013-05-16 13:14 2810前言:Java中数据传递到前端的时候很多情况都是JSON格式数 ... -
怎样比较两个集合是否相等
2013-05-16 10:49 6990受这篇文章启发:http://rijin.iteye.com/ ... -
Java字符串时间转Date工具
2013-04-27 00:13 1899注意:java.util.Date是无时区概念的,不用考虑时区 ... -
Java中变量的线程安全问题
2013-04-22 13:38 1853静态变量:线程非安全 ... -
项目中加入声音文件
2013-03-14 18:22 0Java web how to play audio? --- ... -
Timer、TimerTask实现定时业务处理
2013-03-14 20:26 15401、编写任务 package com.bo ... -
resteasy
2013-03-13 18:36 01、访问方式 PUT POST GET 2、下载资源ja ... -
Java中使用C3P0连接池
2013-03-13 00:25 221971、c3p0.properties c3p0.driverCl ... -
Jsoup解析URL或网页内容开发指南
2013-03-04 10:51 2498参考开发示例文档:http://www.open-open.c ... -
Java中线程池使用
2013-02-27 23:31 1019摘自infoQ:http://www.infoq.com/cn ... -
Java中线程池使用
2013-02-27 23:27 21、合理使用线程池的好 ... -
Java中volatile实现线程间变量共享
2013-02-27 23:03 2435volatile变量自身具有下列特性: 可见性。对一个vol ... -
Java中Synchronized的使用注意事项
2013-02-26 14:21 1266转自:http://www.blogjava.net/free ... -
Java实现mysql存储过程调用
2013-02-19 21:41 1314------------------------------- ... -
Java多线程编程#线程等待机制
2013-02-16 15:37 11221、最佳的模型是:生产者-消费者 package com.b ... -
Java多线程编程#线程同步示例
2013-02-16 13:34 14411、线程不同步 在同一个进程中的线程都是独立运行的,线程之间会 ...
相关推荐
内容概要:本文详细介绍了LabVIEW控件的设计与实现,尤其是一些由经验丰富的老工程师精心打造的控件。LabVIEW是一款图形化编程语言,广泛应用于数据采集、仪器控制和工业自动化领域。文中通过具体实例展示了如何利用LabVIEW创建美观且功能强大的控件,如滑动条、波形图、金属质感旋钮、动态波形图表以及智能选项卡等。作者强调了LabVIEW控件在灵活性和美观度方面的优势,并分享了许多实用的技术细节和优化方法。 适合人群:具有一定编程基础并希望深入了解LabVIEW控件设计的开发者和技术爱好者。 使用场景及目标:适用于需要进行高效的数据展示和交互设计的应用场景,如工业控制系统、实验室设备操作界面等。目标是帮助用户掌握LabVIEW控件的高级特性,提高开发效率和用户体验。 其他说明:文章不仅提供了具体的代码示例,还探讨了控件美学背后的设计理念和技术实现,鼓励读者探索更多可能性。
Delphi 12.3控件之unidac_10.4.0_d27pro.exe
11.盛趣自闭面(还是自己太菜).txt
58面经面试过程和题目.txt
电大操作系统课后习题解答
人工智能技术与应用演讲【61页PPT】
chromedriver-mac-arm64-135.0.7049.41.zip
内容概要:本文详细介绍了QPSK(四相移键控)调制方法及其在瑞利信道和高斯白噪声信道下的误码率(BER)性能分析。首先展示了QPSK星座图的绘制方法,接着构建了一个简化的QPSK发射机模型,用于将二进制比特流映射到相应的星座点。随后,分别实现了两种信道模型:高斯白噪声信道(AWGN)和瑞利信道,并解释了它们的工作原理以及如何向传输信号添加噪声。文中还提供了详细的误码率测试脚本,通过大量随机比特进行仿真,最终得到了不同信噪比条件下的误码率曲线。此外,作者还讨论了QPSK与其他调制方式如BPSK、16QAM之间的性能差异,强调了频谱效率与抗噪能力之间的权衡关系。 适合人群:对无线通信系统感兴趣的科研人员、研究生以及从事通信工程领域的工程师。 使用场景及目标:①帮助读者理解QPSK的基本原理及其在不同信道环境中的行为特性;②提供实用的Python代码片段,便于快速搭建仿真环境并验证理论结果;③探讨各种调制方式的选择依据,指导实际应用中的优化决策。 其他说明:文中多次提到‘骚操作’,意指一些巧妙但非传统的编程技巧,有助于提高代码执行效率或简化复杂度。同时提醒读者注意仿真过程中可能出现的问题,如
新建 Microsoft Word 文档 (9).docx
计算机科学与技术- 软件开发工具 培训资料
bitcount统计每个元素中设置的位数 B = bitcount(A) Counts the number '1' bits in each element B = bitcount(A, bitValue) "bitValue" = 1 = default = counts the occurance of '1' if bitValue = 0; counts the number '0' The total bits to verify is [8,16,32,or 64] based on the maximal value of A B = bitcount(A, bitValue, maxBits) the total # of bits to examine
MOM生产运营管理平台解决方案【35页PPT】
deli-数码录音电话机-HCD6238(28)P-TSD-使用说明书
Java项目基于ssm框架的课程设计,包含LW+ppt
Delphi 12.3控件之Tsilang 7.5.0.0 D12.7z
ios+UIButton分类+UIButton+UIButton图片文字位置
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载
Java项目基于ssm框架的课程设计,包含LW+ppt
Delphi 12.3控件之TextEditorPro64.7z
尝试给OpenHarmony4.0增加可以在动态库中使用的日志模块 文章使用的资源,防止gitee资源丢失