Java:将bytearray转换为string和xml

时间:2014-07-02 16:20:03

标签: java xml json base64 bytearray

我有一个带有"令牌的XML"其中的字段,在java中它是:

@XmlElement(name = "Token", required = true)
protected byte[] token;

我使用UUID生成令牌,所以我这样做:

UUID uuid=UUID.randomUUID();
ByteBuffer bb = ByteBuffer.wrap(new byte[16]);
bb.putLong(uuid.getMostSignificantBits());
bb.putLong(uuid.getLeastSignificantBits());
byte[] token = bb.array();   
myXML.setToken(token);

在XML中我得到类似的东西:

<Token>jvXrf8HvSVq23MiwSbnT+A==</Token>

我还需要将令牌发送到使用Json表示法的服务,因此在另一个函数中,我从XML对象获取令牌并将其存储在POJO中:

String sToken = Base64.encode(myXML.getToken());
myPojo.setToken(sToken);

我检查了字符串并且它是正确的,但是当我用Gson将myPojo转换为Json时:

GsonBuilder gb = new GsonBuilder()
  .serializeNulls()
  .setPrettyPrinting()
  .setDateFormat("yyyy-MM-dd HH:mm:ss");
Gson gson = gb.create();
String json=gson.toJson(myPojo);

我在对象的json字符串表示中得到了这个:

jvXrf8HvSVq23MiwSbnT+A\u003d\u003d

与两个&#34; =&#34;翻译成&#34; \ u003d&#34;。 这很正常吗?将\ u003d代码转换为&#34; =&#34;在接收部分?

谢谢

1 个答案:

答案 0 :(得分:0)

是的,GSON将=更改为unicode \ u003d。

您可以在此处获取详细信息:

GSON issue with String

禁用转义HTML,然后你就可以了。