Java 如何通过jackson JsonGenerator内联对象?
举个例子:Java 如何通过jackson JsonGenerator内联对象?,java,json,jackson,jackson2,Java,Json,Jackson,Jackson2,举个例子: 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 {
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
不要从对象写入{}
已更新
导出的结果是(例如,data
+来自java对象的所有键):
只要在调用
writeBinary
之后不要调用writeEndObject()
,它应该是这样的:
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();
只要在调用
writeBinary
之后不要调用writeEndObject()
,它应该是这样的:
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();
您给出了一个不需要的数据示例(两个对象,这非常有意义,因为您编写代码来生成两个对象)。那么你想要什么数据呢?还可以举一个例子。问题更新您可以始终使用
ObjectMapper
而不是feed。您给出了一个不需要的数据示例(两个对象,这非常有意义,因为您编写代码来生成两个对象)。那么你想要什么数据呢?再举一个例子。问题更新您可以始终使用ObjectMapper
代替种子。这会导致插入没有字段名的对象。例如,{}
brase被插入到previous对象中。这导致插入对象没有字段名。例如,{}
黄铜插入到previuos对象中。