Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过jackson JsonGenerator内联对象?_Java_Json_Jackson_Jackson2 - Fatal编程技术网

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对象中。