java 序列化 乱码_对象序列化成字符串乱码解决

问题描述:

将一个对象序列化成字符串后,字符串是乱码的,并且反序列化报错。

代码如下:

import com.alibaba.fastjson.JSONObject;

import org.springframework.util.SerializationUtils;

import java.util.ArrayList;

import java.util.List;

public class TempTest {

public static void main(String[] args) {

List list = new ArrayList<>();

JSONObject jsonObject = new JSONObject();

jsonObject.put("a", "123");

list.add(jsonObject);

String s = new String(SerializationUtils.serialize(list));

System.out.println(s);

System.out.println(SerializationUtils.deserialize(s.getBytes()));

}

}

打印结果:

�� sr java.util.ArrayListx����a� I sizexp w sr com.alibaba.fastjson.JSONObject L mapt Ljava/util/Map;xpsr java.util.HashMap���`� F

loadFactorI thresholdxp?@ t at 123xx

Exception in thread "main" java.lang.IllegalArgumentException: Failed to deserialize object

at org.springframework.util.SerializationUtils.deserialize(SerializationUtils.java:72)

at demo.TempTest.main(TempTest.java:17)

Caused by: java.io.StreamCorruptedException: invalid stream header: EFBFBDEF

at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:857)

at java.io.ObjectInputStream.(ObjectInputStream.java:349)

at org.springframework.util.SerializationUtils.deserialize(SerializationUtils.java:68)

... 1 more

问题原因:

暂未弄清,欢迎大佬指点

import com.alibaba.fastjson.JSONObject;

import org.springframework.util.SerializationUtils;

import java.util.ArrayList;

import java.util.Base64;

import java.util.List;

public class TempTest {

public static void main(String[] args) {

List list = new ArrayList<>();

JSONObject jsonObject = new JSONObject();

jsonObject.put("a", "123");

list.add(jsonObject);

// 使用Base64编码

String s = Base64.getEncoder().encodeToString(SerializationUtils.serialize(list));

System.out.println(s);

// 使用Base64解码

System.out.println(SerializationUtils.deserialize(Base64.getDecoder().decode(s)));

}

}

打印结果:

rO0ABXNyABNqYXZhLnV0aWwuQXJyYXlMaXN0eIHSHZnHYZ0DAAFJAARzaXpleHAAAAABdwQAAAABc3IAH2NvbS5hbGliYWJhLmZhc3Rqc29uLkpTT05PYmplY3QAAAAAAAAAAQIAAUwAA21hcHQAD0xqYXZhL3V0aWwvTWFwO3hwc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAADHcIAAAAEAAAAAF0AAFhdAADMTIzeHg=

[{"a":"123"}]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值