Ваш вопрос похож на: Jackson JSON custom serialization for certain fields
Что такое желаемое поведение? Вы хотите, чтобы поток был сериализован как строка, как двоичный контент, проанализирован и сериализовался как объект и т. Д.
Предполагая, что данные, сериализованные как строка, можно использовать аннотацию, чтобы рассказать Джексону о том, как сериализовать это:
public class TextFile {
String fileName;
@JsonSerialize(using=ReaderToStringSerializer.class, as=String.class)
StringReader content;
}
public class ReaderToStringSerializer extends JsonSerializer<Reader> {
@Override
public void serialize(Reader contents,
JsonGenerator jsonGenerator,
SerializerProvider serializerProvider)
throws IOException, JsonProcessingException {
StringBuilder buffer = new StringBuilder();
char[] array = new char[8096];
int len = 0;
while (-1 != (len = contents.read(array))) {
buffer.append(array,0,len);
}
contents.close();
jsonGenerator.writeString(buffer.toString());
}
выходной сигнал будет что-то вроде:
{
"fileName": "foo.bar",
"content": "the quick brown fox..."
}
Какой контент действительно содержит поток? Вы хотите написать его как base64? Или вы сначала разобрали его, а затем напишите какое-нибудь представление о нем? –
Base64 - это вариант, но не требование. Я просто не хочу держать всю строку в памяти. – kromit