Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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 JSONGenerator如何在JSON中输出对象_Java_Json_Jackson - Fatal编程技术网

Java JSONGenerator如何在JSON中输出对象

Java JSONGenerator如何在JSON中输出对象,java,json,jackson,Java,Json,Jackson,我想输出以下JSON: result: { "x": 11, "y": 10, "actions": [ ], "localConfigurations": { "local1": {}, "local2": {} } } 我有以下代码: public class Configuration { private int fX; private int fY; private Actio

我想输出以下JSON:

result: {
    "x": 11,
    "y": 10,
    "actions": [
    ],
    "localConfigurations": {
         "local1": {},
         "local2":  {}
    }
}
我有以下代码:

public class Configuration {
    private int fX;
    private int fY;
    private Actions[] fActions;
    private LinkedHashMap<String, LocalConfiguration> fLocalConfigurations = new LinkedHashMap<>();

    @JsonProperty("x")
    public int getX() { return fX; }
    public void setX(int x) { fX = x; }

    @JsonProperty("y")
    // getter and setter for y

    @JsonProperty("actions")
    // getter and setter for actions

    @JsonProperty("localConfigurations")
    // getter and setter for localConfigurations
}
但是,我的输出结果是:

result: [{
    "x": 11,
    "y": 10,
    "actions": [
    ],
    "localConfigurations": {
         "local1": {},
         "local2":  {}
    }
}]
我不确定如何在不使用generator.writeArrayFieldStart的情况下实现所需的输出。如果我只使用writeStartObject并转储对象配置,JSON输出会抛出一些错误。
那么,我怎样才能得到我想要的输出呢?谢谢

您需要打开对象、写入属性、写入
配置
POJO
并关闭对象

generator.writeStartObject();
generator.writeFieldName("result");

objectMapper.writeValue(generator, configuration);

generator.writeEndObject();

您不需要数组,因此不要使用
writeArrayFieldStart
writeEndArray
。你为什么不把你的配置对象包装成一个对象,这个对象有一个配置类型的
结果
字段,然后写下这个对象呢?@JBNizet我不知道你的建议是什么意思。你能提供一个例子吗?
类配置结果{private Configuration result;//…}
,然后是
objectMapper.writeValueAsString(新配置结果(配置))
generator.writeStartObject();
generator.writeFieldName("result");

objectMapper.writeValue(generator, configuration);

generator.writeEndObject();