Jackson将java合成序列化为json
我需要一些帮助来重新分解对客户端的java响应。 这是我当前的响应,用jackson2序列化,效果很好Jackson将java合成序列化为json,java,json,jakarta-ee,jackson,Java,Json,Jakarta Ee,Jackson,我需要一些帮助来重新分解对客户端的java响应。 这是我当前的响应,用jackson2序列化,效果很好 public class PermissionResponse { @JsonProperty private Long id; @JsonProperty private String name; @JsonProperty private Long actionId; @JsonProperty private String actionName;
public class PermissionResponse {
@JsonProperty
private Long id;
@JsonProperty
private String name;
@JsonProperty
private Long actionId;
@JsonProperty
private String actionName;
@JsonProperty
private Long resourceId;
@JsonProperty
private String resourceName;
@JsonProperty
private Long environmentId;
@JsonProperty
private String environmentName;
...
}
但不是传球
@JsonProperty
private String actionName;
@JsonProperty
private Long actionId;
我想要动作实体(包含这两个字段-actionName/name
和actionId/id
)。比如:
@JsonProperty
private Action action;
有人能给我指出正确的方向吗?因为我在这里找不到我需要的东西。谢谢我不是Jackson的专家,但我认为只要你能序列化Action类,Jackson(像GSON一样)就会在任何地方序列化它 在GSON中,这将在以下步骤中完成
public class PermissionResponse {
private Long id;
private String name;
private Action action;
private Long resourceId;
private String resourceName;
private Long environmentId;
private String environmentName;
}
public class Action {
private Long id;
private String name
}
您甚至应该为资源和环境创建类,例如:
public class PermissionResponse {
private Long id;
private String name;
private Action action;
private Resource resource;
private Environment environment;
}
public class Action {
private Long id;
private String name;
}
public class Resource {
private Long id;
private String name;
}
public class Environment {
private Long id;
private String name;
}
上面的示例与GSON兼容,因此您只需与Jackson一起尝试,但我确信,一旦您输入了所有正确的注释,它们就会很好地工作
编辑:更进一步,您可以创建一个公共类,例如:
public class Permission {
private Long id;
private String name;
}
public class PermissionResponse extends Permission {
private Action action;
private Resource resource;
private Environment environment;
}
public class Action extends Permission {
}
public class Resource extends Permission {
}
public class Environment extends Permission {
}
如果您不打算在行动、资源或环境中添加任何其他内容,请不要使用这些类,例如:
public class Permission {
private Long id;
private String name;
}
public class PermissionResponse extends Permission {
private Permission action;
private Permission resource;
private Permission environment;
}
显然,上面使用的代码更少,但是您无法知道权限是什么类型(除非在获取对象之前知道)。如果PermissionResponse对象具有getter和setter,则不需要所有这些@JsonProperty注释。您的嵌套操作对象应该通过工具自动序列化。你遇到了什么问题?