如何通过jackson JsonGenerator内联对象?

问题描述:

考虑例如:如何通过jackson JsonGenerator内联对象?

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 { 

     Object object = new Object() { 
      private String id = "someId"; 
     }; 

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

目标是JSON流期间object添加所有领域。与该代码我:

{ 
    "data": "JVBERi0xLjMKJ=" 
} { 
    "id": "someId", 
} 

如何告诉jackson不要再写从对象{}

修订

的exprected结果(如data +从Java对象中的所有键):

{ 
    "data": "JVBERi0xLjMKJ=", 
    "id": "someId", 
} 
+0

你举了一个你不想要的数据的例子(两个对象,这使得完美的意义是临时的这是因为你编写代码来生成两个对象)。那么你需要什么样的数据呢?举一个例子。 – Gimby

+0

已更新问题 – Cherry

+0

您始终可以使用ObjectMapper来保证。 – Antoniossss

只是不叫writeEndObject()你叫writeBinary后,它应该看起来像:

final JsonGenerator generator = new JsonFactory().createGenerator(System.out); 
     generator.writeStartObject(); 
     generator.writeFieldName("data"); 
     generator.writeBinary(new FileInputStream(new File("D:\\!Temp\\elasticsearch\\pdf.pdf")), -1); 
     generator.writeObject(object); 
     generator.writeEndObject(); 
     generator.close(); 
+0

您忘记了调用'writeEndObject()' – Nico

+0

谢谢。更新回应。 – Chris

+0

它导致没有字段名称的插入对象。例如。在previuos对象内插入'{}'brase。 – Cherry