2017-09-28 4 views
1

Je suis en train d'écrire JSON de flux à un autre avec le champ base64 comme ça:Pourquoi Jackson ne termine-t-il pas la création json du flux?

import com.fasterxml.jackson.core.JsonFactory; 
import com.fasterxml.jackson.core.JsonGenerator; 

import java.io.File; 
import java.io.FileInputStream; 

public class Exmaple { 
    public static void main (String[] args) throws Exception { 

     final JsonGenerator generator = new JsonFactory().createGenerator(System.out); 
     generator.writeStartObject(); 
     generator.writeFieldName("data"); 
     generator.writeBinary(new FileInputStream(new File("D:\\somePath\\pdf.pdf")), -1); 
     generator.writeEndObject(); 
    } 
} 

Au lieu de pdf.pdf vous pouvez utiliser un fichier.

Mais outut je suis arrivé:

{"data":"JVBERi0xLjMKJcfsj6IKMzAgMCBvYmoKPD 
  • Pas " à la fin malgré generator.writeEndObject() est appelé
  • Pas = ou == à la fin de base64
  • Pas } à la fin de l'objet

Pourquoi ça arrive? Comment régler ceci???

+0

Veuillez fournir un [mcve]. –

+3

Vous pourriez vouloir fermer le 'JsonGenerator'. –

+1

Yep fermer - est la solution :) – Cherry

Répondre

1

Il est nécessaire d'ajouter generator.close() appel qui conduit à vider flux.