【发布时间】:2018-02-15 23:59:32
【问题描述】:
我正在尝试转换这个基于 64 位的编码 JSON 字符串,并使用 flexjson API 将接收到的 JSON 转换为 POJO。
第一个尝试块,将直接JSON作为字符串转换为成功的对象。该字符串使用在线工具解码。
现在第二个尝试块,尝试以类似的方式将基于 64 的字符串转换为对象,但在运行时转换基于 64 的字符串,这会引发异常 flexjson.JSONException: Expected a ',' or ']' at字符 10
try {
AsyncResponseDO asyncResponseDO = new JSONDeserializer<AsyncResponseDO>().deserialize("{\"relatesTo\":\"7_Sept2017_IF01\"}", AsyncResponseDO.class);
System.out.println(asyncResponseDO.getRelatesTo());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
AsyncResponseDO asyncResponseDO = new JSONDeserializer<AsyncResponseDO>().deserialize(Base64.decodeBase64("eyJyZWxhdGVzVG8iOiI3X1NlcHQyMDE3X0lGMDEifQ==".getBytes()).toString(), AsyncResponseDO.class);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
POJO 类:
public class AsyncResponseDO {
private String relatesTo;
public String getRelatesTo() {
return relatesTo;
}
public void setRelatesTo(String relatesTo) {
this.relatesTo = relatesTo;
}
}
【问题讨论】:
-
getBytes应该在那里实现什么?Base64.decodeBase64不接受简单的文本文字/字符串作为参数吗? -
@CBroe 不,它只接受 byte[] byte[] org.apache.commons.codec.binary.Base64.decodeBase64(byte[] arg0)
-
@CBroe byte[] decodeBase64(String base64String) 从 1.4 开始可用,我在 1.2。
-
在将其解码为 JSON 之前,您是否至少检查过结果?
-
新字符串(Base64.decodeBase64("eyJyZWxhdGVzVG8iOiI3X1NlcHQyMDE3X0lGMDEifQ==".getBytes()));
标签: java json json-deserialization flexjson