com.alibaba.fastjson.JSON对类对象的序列化与反序列化

1. 目标

把类的对象存储到字符串可存储

2. 类定义

public interface JsonInterface {
}
mport com.alibaba.fastjson.JSON;
import lombok.Getter;
import lombok.Setter;

@Setter
@Getter
public class JsonVo implements JsonInterface {
    private String id;
    private String name;

    public JsonVo(String id, String name) {
        super();
        this.id = id;
        this.name = name;
    }

    @Override
    public String toString() {
        return String.format("id:%s   ||||  name:%s", id, name);

    }
}

3. 测试

    public void test() {
        JsonInterface tmp = new JsonVo("id1", "name1");
        String json = JSON.toJSONString(tmp);

        System.out.println(json);
        JsonInterface jsonVo = JSON.parseObject(json, JsonVo.class);
        System.out.println(jsonVo);

        System.out.println("--------");

        byte[] bytes = JSON.toJSONBytes(tmp);
        System.out.println(bytes);
        JsonInterface jsonVo2 = JSON.parseObject(bytes, JsonVo.class);
        System.out.println(jsonVo2);
    }

结果

{"id":"id1","name":"name1"}
id:id1   ||||  name:name1
--------
[[email protected]
id:id1   ||||  name:name1

4. Fastjson

Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景

5. TypeReference

例1

 public void test2() {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(9);
        list.add(4);
        list.add(8);
        JSONObject jsonObj = new JSONObject();
        jsonObj.put("a", list);
        System.out.println(jsonObj);

        List<String> list2 = jsonObj.getObject("a", new TypeReference<List<Integer>>(){});
        System.out.println(list2);
    }

结果

{"a":[1,9,4,8]}
[1, 9, 4, 8]

例2

public void test3() {
        List<JsonVo> list = new ArrayList<>();
        list.add(new JsonVo("id1", "name1"));
        list.add(new JsonVo("id2", "name2"));
        list.add(new JsonVo("id3", "name3"));
        JSONObject jsonObj = new JSONObject();
        jsonObj.put("a", list);
        System.out.println(jsonObj);

        List<String> list2 = jsonObj.getObject("a", new TypeReference<List<JsonVo>>(){});
        System.out.println(list2);
    }

结果

{"a":[{"id":"id1","name":"name1"},{"id":"id2","name":"name2"},{"id":"id3","name":"name3"}]}
[id:id1   ||||  name:name1, id:id2   ||||  name:name2, id:id3   ||||  name:name3]

  

原文地址:https://www.cnblogs.com/kaituorensheng/p/9886425.html

时间: 2024-10-31 13:04:04

com.alibaba.fastjson.JSON对类对象的序列化与反序列化的相关文章

C# Json数据与对象的序列化与反序列化

先在NuGet包管理器中获取以下包: 在cs文件中引入命名空间: 1 using Newtonsoft.Json; 方法的实现: 1 public static string ObjectToJson(this object data) 2 { 3 return JsonConvert.SerializeObject(data); 4 } 5 6 public static T JsonToObject<T>(this string data) 7 { 8 return JsonConvert

Json与类对象转换

Json在js,jquery中可以直接使用,比如下串: { "from":"en" ,"to":"zh" ,"trans_result": [ {"src":"today","dst":"\u4eca\u5929"} ] } 可以直接使用data.from即可获取到"en". 但是在c#中不可以.要获取值,有

利用JavaScriptSerializer类 进行Json对象的序列化和反序列化和过滤

项目下载:JavaScriptSerializer_对JSON对象序列化与反序列化及过滤器 利用<JavascriptSerializer类> 进行Json对象的序列化和反序列化 1. 首先, JavascriptSerializer类所在名空间: using System.Web.Script.Serialization; 2. 相关的3篇文章, 标记下: 使用JavaScriptSerializer进行JSON序列化 注意:    是复杂对象. JSON是Javascript中常用的数据格

利用 进行Json对象的序列化和反序列化 - RJ - 博客园

利用<JavascriptSerializer类> 进行Json对象的序列化和反序列化 - RJ - 博客园 利用<JavascriptSerializer类> 进行Json对象的序列化和反序列化 进行Json对象的序列化和反序列化 - RJ - 博客园,bubuko.com" href="http://www.bubuko.com/infodetail-217182.html" target=_blank>利用 进行Json对象的序列化和反序列

Java对象的序列化和反序列化

一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中: 2) 在网络上传送对象的字节序列. 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存.比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些s

Java基础学习总结——Java对象的序列化和反序列化

一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中: 2) 在网络上传送对象的字节序列. 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存.比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些s

Java对象的序列化与反序列化

我们知道Java中的对象都是存在于堆内存中的,而堆内存是可以被垃圾回收器不定期回收的.从对象被创建到被回收这一段时间就是Java对象的生命周期,也即Java对象只存活于这个时间段内. 对象被垃圾回收器回收意味着对象和对象中的成员变量所占的内存也就被回收,这意味着我们就再也得不到该对象的任何内容了,因为已经被销毁了嘛,当然我们可以再重新创建,但这时的对象的各种属性都又被重新初始化了.所以如果我们需要保存某对象的状态,然后再在未来的某段时间将该对象再恢复出来的话,则必须要在对象被销毁即被垃圾回收器回

对象的序列化与反序列化---IO学习笔记(四)

对象的序列化,反序列化 对象的序列化: 就是将Object转换成byte序列 对象的反序列化: 将byte序列转换成Object 序列化流.反序列化流 序列化流(ObjectOutputStream),是字节的过滤流->主要方法:writeObject() 反序列化流(ObjectInputStream)->主要方法:readObject() 序列化接口(Serializable) 对象必须实现序列化接口.才干进行序列化.否则将出现异常 这个接口,没有不论什么方法,仅仅是一个标准. 主要的对象

java中对象的序列化和反序列化

[对象的序列化和反序列化 ] 1.定义:序列化--将对象写到一个输出流中.反序列化则是从一个输入流中读取一个对象.类中的成员必须是可序列化的,而且要实现Serializable接口,这样的类的对象才能被序列化和反序列化.这个接口是一个表示型的接口.serialVersionUID是一个串行化类的通用标示符,反串行化就是使用这个标示符确保一个加载的类对应一个可串行化的对象. 自己指定了serialVersionUID,就可以在序列化后,去添加一个字段,或者方法,而不会影响到后期的还原,还原后的对象