java - JSONGenerator 如何在 JSON 中输出一个对象
问题描述
我想输出以下 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
}
下面是我试图用来输出 JSON 的代码:
JsonFactory factory = new JsonFactory();
JsonGenerator generator = factory.createGenerator(fOutputStream);
generator.writeStartObject();
generator.writeArrayFieldStart("result");
if (configuration != null)
mapper.writeValue(generator, configuration);
generator.writeEndArray();
generator.writeEndObject();
generator.close();
但是,我的输出结果为:
result: [{
"x": 11,
"y": 10,
"actions": [
],
"localConfigurations": {
"local1": {},
"local2": {}
}
}]
我不确定如何在不使用 generator.writeArrayFieldStart 的情况下实现所需的输出。如果我只使用 writeStartObject 并转储对象配置,则 JSON 输出会引发一些错误。那么,我怎样才能得到我想要的输出呢?谢谢
解决方案
您需要打开对象、写入属性、写入Configuration
POJO
和关闭对象。
generator.writeStartObject();
generator.writeFieldName("result");
objectMapper.writeValue(generator, configuration);
generator.writeEndObject();
推荐阅读
- python - Python:位数组到整数:使用 NumPy 数组随机获取负整数
- mysql - 如何在 mySQL 的触发器中使用 select..into 语句
- python - Keras 加载的模型没有相同的精度
- node.js - 收到错误“原因:java.lang.Exception: internal/modules/cjs/loader.js:983 throw err; ^Error: Cannot find module 'react-native/cli'”#1121
- html - 如何在 django html 模板中迭代列表
- javascript - DOM 未使用 Vue 中的更新内容进行更新
- mongodb - createCollection Privileges 即使在撤销后仍然有效
- google-colaboratory - colab上TPU的规格
- javascript - 如何使用函数访问 ngFor 中的每个元素?
- react-native - 我需要在原生反应中使用 GPS 以编程方式获取我的当前位置我怎样才能实现它?