आप अपना खुद का कस्टमसेरियलाइज़र इस तरह लिख सकते हैं:
public class ByteArraySerializer extends JsonSerializer<byte[]> {
@Override
public void serialize(byte[] bytes, JsonGenerator jgen,
SerializerProvider provider) throws IOException,
JsonProcessingException {
jgen.writeStartArray();
for (byte b : bytes) {
jgen.writeNumber(unsignedToBytes(b));
}
jgen.writeEndArray();
}
private static int unsignedToBytes(byte b) {
return b & 0xFF;
}
}
यह एक बेस 64 स्ट्रिंग के बजाय एक हस्ताक्षरित बाइट सरणी प्रस्तुतिकरण देता है।
कैसे अपने POJO के साथ उपयोग करने के लिए:
public class YourPojo {
@JsonProperty("mimetype")
private String mimetype;
@JsonProperty("value")
private byte[] value;
public String getMimetype() { return this.mimetype; }
public void setMimetype(String mimetype) { this.mimetype = mimetype; }
@JsonSerialize(using= com.example.yourapp.ByteArraySerializer.class)
public byte[] getValue() { return this.value; }
public void setValue(String value) { this.value = value; }
}
और यहाँ एक उदाहरण है की यह उत्पादन है:
{
"mimetype": "text/plain",
"value": [
81,
109,
70,
122,
90,
83,
65,
50,
78,
67,
66,
84,
100,
72,
74,
108,
89,
87,
48,
61
]
}
पुनश्च: यह serializer कुछ जवाब है कि मैं StackOverflow पर पाया का एक मिश्रण है ।
स्रोत
2013-02-23 05:16:01
लेकिन कृपया ध्यान रखें कि विभिन्न प्रकार के बेस 64 हैं। –