【问题标题】:Base64 decode values at JSON deserializationJSON 反序列化时的 Base64 解码值
【发布时间】:2015-04-27 09:01:04
【问题描述】:

我正在用 Java 开发一个应用程序,它从 API 读取 JSON,该 API 返回以 Base64 编码的值。这是JSON的一部分(实际上,有很多键/值):

{
    "id_element": "MjUxMTEz",
    "title": "VGVzdCB0aXRsZQ==",
    "description": "SSBrbmV3IHlvdSB3ZXJlIHZlcnkgY3VyaW91cyAhIEhhaGEgOkQ=",
    "picture": "aHR0cDovL3RoZWFydG1hZC5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTUvMDIvQ3VyaW91cy1HZW9yZ2UtV2FsbHBhcGVyLTcuanBn",
    "link": "",
    "id_categorie": "MTB5Nzc=",
    "active": "MQ==",
    "date_create": "MDAwMC0wMC0wMCAwMDowMDowMA=="
}

是否有在反序列化过程中支持 Base64 解码的 Java 库,还是我必须自己做这个?我想要一个带有来自这个 JSON 的反序列化值的 Java 对象。非常感谢!

【问题讨论】:

标签: java json base64 deserialization


【解决方案1】:

您可以使用 apache commons 编解码器 http://commons.apache.org/proper/commons-codec/ 并调用以下方法: byte[] org.apache.commons.codec.binary.Base64.decodeBase64(String base64String)

如:

 /**
 * Decode string to image
 * @param encodedString The string to decode
 * @return decoded image
 */
public static BufferedImage decodeToImage(String encodedString) {

    BufferedImage image = null;
    byte[] imageByte;
    try {
        imageByte = Base64.decodeBase64(encodedString);
        ByteArrayInputStream bis = new ByteArrayInputStream(imageByte);
        image = ImageIO.read(bis);
        bis.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return image;
}

【讨论】:

    【解决方案2】:

    Afaik 没有这样的库,因为这是两个不同的主题。尽管如此,在第二步中进行解码应该没什么大不了的。这意味着拥有像 Gson 或 Jackson 这样舒适的 JSON 库更为重要。

    【讨论】:

      猜你喜欢
      • 2013-12-13
      • 2020-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多