java - 使用 Jackson 获取动态属性名称

标签 java json jackson

我需要创建 json,其中对象的结构都相似,但可以包含不同的对象名称,即:

    "obj1":{
         "field1":1,
         "field2":2
     }
    "obj2":{
         "field1":4,
         "field2":5
     }
    "obj3":{
         "field1":7,
         "field2":8
     }

如何使用 jackson 创建动态字段名称?这将在运行时完成,具体取决于所采取的输入

最佳答案

您可以引用这个答案:Jackson dynamic property names .

基本上你可以使用自定义JsonSerializer .

  @JsonProperty("p")
  @JsonSerialize(using = CustomSerializer.class)
  private Object data;

  // ...

public class CustomSerializer extends JsonSerializer<Object> {
  public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
    jgen.writeStartObject();
    jgen.writeObjectField(value.getClass().getName(), value);
    jgen.writeEndObject();
  }
}

关于java - 使用 Jackson 获取动态属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31270093/

相关文章:

java - 提交表单时出现 HtmlUnit StackOverflowError

Java 8 Jackson 不可变类反序列化

c# - 从端点返回 JObject 作为 Json

java - jackson @JsonPropertyOrder 被忽略

java - 序列化时如何创建虚拟 JSON 属性?

java - 使用 AWS SDK 以编程方式创建/恢复 EBS 快照的示例

java - 使用 JAXB 将 XML CDATA 字符串解码为文字

java - 无法从主包 (Eclipse) 访问测试包中的类

php - 如何使用 PHP 或 jQuery 在 JSON 文件中设置正确的 $key=>$value 关联

java - 如何使用 jackson 反序列化带有索引的数组