我想问你的帮助。我有一个设备对象追加生成的json树
public class Device {
public String name;
public String deviceId;
@JsonSerialize(using = CustomResourceSerializer.class)
public Map<String, Map<String, Object>> customResources;
}
我的目标是“提取”该地图直接到设备对象。首先我使用@JsonAnyGetter
,它运行良好,并且Map直接嵌套在Device对象的第一个map字段String下。
但我需要更复杂的逻辑,我有两个问题,我不知道如何解决。
- 第一张地图的关键字是例如
"configuration/inputOne"
。随着@JsonAnyGetter
的例子输出{ "configuration/inputOne": { "rate":23 } }
我需要的是基于分隔符嵌套结构,所以
{ "configuration": { "inputOne": { "rate":23 } } }
这个我几乎能与定制容易做JsonSerializer
jsonGenerator.writeStartObject();
foreach(splited key)
jsonGenerator.writeObjectFieldStart(resourceUriItem);
foreach(value)
jsonGenerator.writeObjectField(k, v);
foreach(splitted key)
jsonGenerator.writeEndObject();
jsonGenerator.writeEndObject();
但最终物体看起来像
{ "customResource": {"configuration": { "inputOne": { "rate":23 } } } }
CustomResource字段来自Device对象,我不知道如何摆脱它。与JsonAnyGetter一样。这是第一个问题。
正如所看到的,我分裂映射的键为具有多个嵌套strucutre,所以从“配置/ inputOne”到
{ configuration { inputOne { .. } }
。但地图customResources可以有当然多个项目,因此,例如:"configuration/inputOne"
"configuration/inputTwo"
"configuration"
现在,你可能会看到哪里出了问题。当我遍历键和我创建嵌套结构时,我会覆盖它。例如,首先,我将创建对象配置,然后输入一个并填充字段。关闭对象。然后在地图中的第二项,创建配置对象和inputTwo对象。但是通过创建配置,我将删除以前使用inputOne创建的一个。
你有什么建议如何解决这个问题吗?谢谢。