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函数中的输出就可以了。

时间: 2024-08-29 16:37:42

Java 中使用Jackson反序列化的相关文章

Java中使用Jackson进行JSON解析和序列化

Java中使用Jackson进行JSON解析和序列化 1.添加依赖,在Maven的pom.xml文件中添加以下依赖 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.5.3</version> </dependency> 2.封装JSON解

java中序列化与反序列化的冷知识

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 关于什么是序列化,和为什么要序列化的知识就不再阐述了,本文主要探讨一些特殊点的情况. 1.java中如何实现序列化和反序列化 下面的代码是进行序列化的简单实例 public static void main(String[] args) { System.out.println("-----------------序列化----------------------↓"); Student stu

Java 中序列化与反序列化引发的思考?

java 中序列化指从对象转变为 二进制流的过程中需要进行序列化,而反序列化指二进制流转换为java 对象.那么有的时候java 存储到数据库不需要序列化, 而计算机系统本质存储的就是二进制文件,数据库的本质又是什么呢? 一.从硬件说起 核心五部分:运算器.控制器.存储器.输入设备.输出设备 根据冯诺伊曼计算机原理,计算机除了五部分外,存储用于存放指令与数据,运算器完成算数与逻辑运算,外部人员通过输入/输出设备操作计算机,且计算机内部是使用二进制表示指令与数据. 其中指定由操作码和地址吗构成,操

在Java中进行序列化和反序列化

对象序列化的目标是将对象保存在磁盘中,或者允许在网络中直接传输对象. 对象序列化允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久保存在磁盘上或者通过网络将这种二进制流传输到另外一个网络节点. 其他程序一旦获得了这种二进制流,都可以将这种二进制流恢复成原本的Java对象. 序列化的含义和意义 序列化机制允许将实现序列化的Java对象转换成字节序列,这些字节序列可以进行持久化或者通过网络传输,使得对象可以脱离程序的运行而独立存在. 序列化将一个Java对象写入IO流中.

Java中如何将String转成Date

Java中如何将String转成Date 最近在开发Json数据反序列化为Java对象的时候发现spring mvc 和 Jackson 对Date类型对支持不是特别好,虽然在Java对象序列化为Json数据的过程中提供了便利的注解,但是反序列化却没有,于是就引出了下面的问题,我需要手工的将字符串转换为Date类型的数据,java.text.SimpleDateFormat 为我们提供了这种转换的基础设施.如下列出了的格式化模式的简单定义,如果 ‘M’ 大于等于3位, 月份会显示为字母,否则是数

小白审计JACKSON反序列化漏洞

1. JACKSON漏洞解析 poc代码:main.java import com.fasterxml.jackson.databind.ObjectMapper; import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; import org.springframework.util.FileCopyUtils; import java.io.ByteArrayOutputStream; import java.io.File

Java 中 Gson的使用

JSON 是一种文本形式的数据交换格式,它比XML更轻量.比二进制容易阅读和编写,调式也更加方便;解析和生成的方式很多,Java中最常用的类库有:JSON-Java.Gson.Jackson.FastJson等 一.Gson的基本用法 Gson提供了fromJson() 和toJson() 两个直接用于解析和生成的方法,前者实现反序列化,后者实现了序列化:同时每个方法都提供了重载方法 (1)基本数据类型的解析 Gson gson = new Gson(); int i = gson.fromJs

java中的反射机制和javaBean

反射 反射:就是通过一个类加载进方法区时加载到栈内存中的Class字节码文件对这个类进行解剖 通过反射可以获取到一个类的构造方法,成员方法,成员变量 反射将一个类的各个部分映射成相应的类 反射获取构造方法 Class类中方法 Constructor<?>[] getConstructors() 返回当前字节码文件对象的所有public修饰的构造方法 Constructor<T> getConstructor(Class<?>...parameterTypes)返回指定了

Java的序列化与反序列化

Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象的过程. 2.为什么需要序列化与反序列化 我们知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本.图片.音频.视频等, 而这些数据都会以二进制序列的形式在网络上传送.那么当两个Java进程进行通信时,能否实现进程间的对象传送