java – Jackson ObjectMapper如何将byte []传递给String,如何在没有对象类的情况下将其翻译?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Jackson ObjectMapper如何将byte []传递给String,如何在没有对象类的情况下将其翻译?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1590字,纯文字阅读大概需要3分钟。
内容图文
我想开发restful服务,它会将JSON String返回给客户端.现在我的对象中有byte []属性.
我使用ObjectMapper将此对象转换为json并响应客户端.
但是如果我使用String.getBytes()来翻译接收到的字符串,我发现byte []是错误的.以下是示例.
Pojo课程
public class Pojo {
private byte[] pic;
private String id;
//getter, setter,...etc
}
准备数据:使用image获取字节数组
InputStream inputStream = FileUtils.openInputStream(new File("config/images.jpg"));
byte[] pic = IOUtils.toByteArray(inputStream);
Pojo pojo = new Pojo();
pojo.setId("1");
pojo.setPic(pic);
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(pojo);
–Situation 1:使用readvalue对象=> image2.jpg是正确的
Pojo tranPojo = mapper.readValue(json, Pojo.class);
byte[] tranPicPojo = tranPojo.getPic();
InputStream isPojo = new ByteArrayInputStream(tranPicPojo);
File tranFilePojo = new File("config/images2.png");
FileUtils.copyInputStreamToFile(isPojo, tranFilePojo);
–Situation 2:使用readvalue来映射并得到String => image3.jpg坏了
Map<String, String> map = mapper.readValue(json, Map.class);
byte[] tranString = map.get("pic").getBytes();
InputStream isString = new ByteArrayInputStream(tranString);
File tranFileString = new File("config/images3.png");
FileUtils.copyInputStreamToFile(isString, tranFileString);
如果我必须使用情境2来翻译JSON字符串,我该怎么办?因为客户端无法获取Pojo.class,所以客户端只能自己翻译JSON字符串.
非常感谢!
最佳答案:
Jackson正在将byte []序列化为Base64字符串,如the documentation of the serializer所述.
默认的base64变体是MIME without line feed(一行中的所有内容).
您可以使用ObjectMapper上的setBae64Varient更改变体.
内容总结
以上是互联网集市为您收集整理的java – Jackson ObjectMapper如何将byte []传递给String,如何在没有对象类的情况下将其翻译?全部内容,希望文章能够帮你解决java – Jackson ObjectMapper如何将byte []传递给String,如何在没有对象类的情况下将其翻译?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。