我收到的json数据包含这样的二进制数据,我想在java中将该数据转换为byte[],但我不知道如何?。
"payload": "7V1bcxs3ln6frfdcfvfbghfdX8HSw9Zu1QzzartyhblfdcvberCObjvJpkiJUpmhRI1pKXYeXHRsZLSrCy
5dElN5tfvQaO72TdSoiOS3TH8Yxdffgtg754679513qdfrgvlslsqdeqaepdccngrdzedrtghBD+d++e7v//p80/v96v7h+u72
+z1gfK/39x/+9t391cPTzeP88aE/++Fvvd53n+8+Xd1c/fBm/unqAf+7
N7v65en++vGP3vx2fvPHw/XDdwfpHf5mevhq/vQDcnAAwD+gEPwDF+bDxTv+3UF61d/4eesrfP356uFx"
基于对;二进制";字符串由ASCII字母、数字和"+"以及"/&";,我非常确信它实际上是Base64编码的数据。
要将Base64解码为byte[]
,您可以执行以下操作:
String s = "7V1bcxs3ln6...";
byte [] bytes = java.util.Base64.getDecoder().decode(s);
如果输入字符串未正确进行Base64编码,则decode
调用将抛出IllegalArgumentException
。
当我使用在线Base64解码器解码该特定字符串时,结果是无法理解的。但这正是我所期望的;blob";二进制数据。
通常,如果您在某个对象中有一个字符串,表示json负载,则可以:
String s = "7V1bcxs3ln6...";
byte [] bytes = s.getBytes();
除此之外,如果该有效载荷应以某种方式解码,则将需要额外的代码。
在我的情况下,我必须转换我知道是文本的有效载荷,比如:
{"有效载荷":"eyJ1c2VyX2lkIjo0LCJ1c2VybmFtZSI6IngiLCJjaXR5IjoiaGVyZSJ9"}
这就是java.util.Base64.getDecoder((和getBytes((之间的区别:
String s = "eyJ1c2VyX2lkIjo0LCJ1c2VybmFtZSI6IngiLCJjaXR5IjoiaGVyZSJ9";
byte [] bytes = s.getBytes();
byte [] bytes_base64 = java.util.Base64.getDecoder().decode(s);
String bytesToStr = new String(bytes, StandardCharsets.UTF_8);
String bytesBase64Tostr = new String(bytes_base64, StandardCharsets.UTF_8);
System.out.println("bytesToStr="+bytesToStr);
System.out.println("bytesBase64Tostr="+bytesBase64Tostr);
输出:
bytesToStr=eyJ1c2VyX2lkIjo0LCJ1c2VybmFtZSI6IngiLCJjaXR5IjoiaGVyZSJ9
bytesBase64Tostr={"user_id":4,"username":"x","city":"here"}
java.util.Base64.getDecoder((在我的案例中适用于