Java JSONGenerator如何在JSON中输出对象
我想输出以下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
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();