Java 中使用Jackson反序列化
Build.gradle:
compile group: 'org.codehaus.jackson', name: 'jackson-mapper-lgpl', version: '1.9.13'
compile group: 'org.codehaus.jackson', name: 'jackson-core-lgpl', version: '1.0.1'
compile group: 'httpunit', name: 'httpunit', version: '1.3'
分别引用jackson包和WebConversation/WebResponse等发送WebRequest相关的包。 点这个刷新来添加引用。
Main中调用请求
String url ="http://****"; // Api的接口 NormalService normalService; //NormalService是用来接收API的反序列化类
normalService = (NormalService)test.CallResetAPI(Class.forName("NormalService"),url,"GET");
下面是CallResetAPI部分,是用了Java中的泛型,关于Java的泛型请参照http://www.cnblogs.com/iyangyuan/archive/2013/04/09/3011274.html
import com.meterware.httpunit.WebConversation;
import com.meterware.httpunit.WebResponse;
import org.codehaus.jackson.map.ObjectMapper; /**
* Created by ygshen on 2015/3/3.
*/
public class test {
public static <T> T CallResetAPI(Class<T> tClass, final String url, String method) throws Exception { WebConversation conversation = new WebConversation();
WebResponse response = conversation.getResponse(url);
String respStream = response.getText();
return ReadObject(
tClass,
respStream);
} private static <T> T ReadObject(
Class<T> tClass,
String stream) throws Exception {
T data = tClass.newInstance(); try {
data = new ObjectMapper().readValue(stream,tClass); } catch (Exception e) {
// Handle the problem
throw e;
}
return data;
} }
下面是反序列化的类代码
import java.io.Serializable;
import java.util.List; /**
* Created by ygshen on 2015/3/3.
*/
public class NormalService implements Serializable
{
public List<Service> serviceList;
public int count;
public String env;
public Boolean success;
} // Service部分代码 import java.io.Serializable;
import java.util.List; /**
* Created by ygshen on 2015/3/3.
*/ public class Service implements Serializable
{ public String serviceCode; public String serviceName;
public String serviceNamespace;
public String serviceContacts;
public List<ServiceEndpoint> endpointList;
} /**
* Created by ygshen on 2015/3/3.
*/
public class ServiceEndpoint {
public String Test1;
public String Test2;
public String Test3;
}
这样只要测试Main函数中的输出就可以了。
Java 中使用Jackson反序列化的更多相关文章
- Java 中序列化与反序列化
一. 序列化和反序列化概念 Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程.将程序中的对象,放入文 ...
- Java 中序列化与反序列化引发的思考?
java 中序列化指从对象转变为 二进制流的过程中需要进行序列化,而反序列化指二进制流转换为java 对象.那么有的时候java 存储到数据库不需要序列化, 而计算机系统本质存储的就是二进制文件,数据 ...
- JAVA中序列化和反序列化中的静态成员问题
关于这个标题的内容是面试笔试中比较常见的考题,大家跟随我的博客一起来学习下这个过程. ? ? JAVA中的序列化和反序列化主要用于: (1)将对象或者异常等写入文件,通过文件交互传输信息: (2)将对 ...
- JAVA中序列化和反序列化
一般程序在运行时,产生对象,这些对象随着程序的停止运行而消失(java回收机制)但如果我们想把某些对象(因为是对象,所以有各自不同的特性)保存下来,在程序终止运行后,这些对象仍然存在,可以在程序再次运 ...
- Spring Boot在反序列化过程中:jackson.databind.exc.InvalidDefinitionException cannot deserialize from Object value
错误场景 用Spring boot写了一个简单的RESTful API,在测试POST请求的时候,request body是一个符合对应实体类要求的json串,post的时候报错. 先贴一段error ...
- K:java中的序列化与反序列化
Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?以下内容将围绕这些问题进行展开讨论. Java序列化与反序列化 简单来说Java序列化是指把Java对象转 ...
- JSON(三)——java中对于JSON格式数据的解析之json-lib与jackson
java中对于JSON格式数据的操作,主要是json格式字符串与JavaBean之间的相互转换.java中能够解析JSON格式数据的框架有很多,比如json-lib,jackson,阿里巴巴的fast ...
- 在Java中进行序列化和反序列化
对象序列化的目标是将对象保存在磁盘中,或者允许在网络中直接传输对象. 对象序列化允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久保存在磁盘上或者通过网络将这种二进制流传输 ...
- 第12讲-Java中的IO操作及对象的序列化与反序列化
1.知识点 1.1.课程回顾 1.2.本章重点 1.2.1 io操作 1.2.2 对象的序列化与反序列化 2.具体内容 2.1.Java IO 2.1.1.什么是IO IO其实就是输入.输出 I ...
随机推荐
- C++程序设计实践指导1.7超长数列中n个数排序改写要求实现
改写要求1:将以上程序改写为适合超长整数 改写要求2:将以上程序改写为适合超长数列 改写要求3:将数列中指定位置m开始的n个结点重新按降序排序 改写要求4:输出指定位置m开始的n个结点的超长整数 #i ...
- oracle中的rowid和数据行的结构
在oracle数据库系统中每一行都有一个rowid,oracle数据库系统就是利用rowid来定位数据行的.rowid也是oracle中内置的一个标量数据类型 rowid有一下特点; 是数据库中每一行 ...
- win7笔记本电脑实现wifi共享
前提条件:win 7系统,有wifi 同dos命令就可实现wifi共享 第一步: netsh wlan start hostednetwork pause 第二步: netsh wlan set ho ...
- Oracle表分区[转]
废话少说,直接讲分区语法. Oracle表分区分为四种:范围分区,散列分区,列表分区和复合分区. 一:范围分区 就是根据数据库表中某一字段的值的范围来划分分区,例如: create table gra ...
- TensorFlow深度学习笔记 Tensorboard入门
转载请注明作者:梦里风林 Github工程地址:https://github.com/ahangchen/GDLnotes 欢迎star,有问题可以到Issue区讨论 官方教程: https://ww ...
- 【测试技术】ant在测试中的使用@文件以及目录的读写删和复制
ant其实就是一个java的打包工具,存在的时间已经很久了,很多同行在使用中可能就是用,对为什么要用它,能够怎么用没有更多的了解: ---------------------------------- ...
- js监听和观察者模式
http://redhacker.iteye.com/blog/1756436 https://developer.mozilla.org/en-US/docs/Web/Guide http://ww ...
- Qt4.7文档翻译:Qt样式单参考,Qt Style Sheets Reference(超长,超全)
内容目录 Qt样式单参考 可进行样式设置的部件列表 属性列表 图标列表 属性类型列表 伪状态列表 子控件列表 Qt样式单参考 Qt样式单支持各种属性.伪状态和子控件,这样使得妳能够自行设计部件的外观. ...
- 强化一下,QDialog有专门的exec函数和finished信号,QWidget都没有
http://blog.csdn.net/dbzhang800/article/details/6300519
- Unix/Linux环境C编程入门教程(22) C/C++如何获取程序的运行时间
1.问:知道程序运行时间我们可以做什么? 在<C++应用程序性能优化>一书中,如果大家读过相信大家一定对性能优化这一块非常上心,文中总是对优化前后的时间对比非常直观给我们一个感受. 那么我 ...