JAVA json架构2 POJO

标签 java json jackson jsonschema

我必须创建 REST 响应。数据为 json 格式,结构必须如下:

{
    "device_id" : { "downlinkData" : "deadbeefcafebabe"}
}

“device_id”必须替换为DeviceId,例如:

{
    "333ee" : { "downlinkData" : "deadbeefcafebabe"}
}

{
    "9886y" : { "downlinkData" : "deadbeefcafebabe"}
}

我用了http://www.jsonschema2pojo.org/这就是结果:

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"device_id"
})
public class DownlinkCallbackResponse {

    @JsonProperty("device_id")
    private DeviceId deviceId;
    @JsonIgnore
    private Map<String, Object> additionalProperties = new HashMap<String, Object>();

    @JsonProperty("device_id")
    public DeviceId getDeviceId() {
    return deviceId;
    }

    @JsonProperty("device_id")
    public void setDeviceId(DeviceId deviceId) {
    this.deviceId = deviceId;
    }

    @JsonAnyGetter
    public Map<String, Object> getAdditionalProperties() {
    return this.additionalProperties;
    }

    @JsonAnySetter
    public void setAdditionalProperty(String name, Object value) {
    this.additionalProperties.put(name, value);
    }

}

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"downlinkData"
})
public class DeviceId {

    @JsonProperty("downlinkData")
    private String downlinkData;
    @JsonIgnore
    private Map<String, Object> additionalProperties = new HashMap<String, Object>();

    @JsonProperty("downlinkData")
    public String getDownlinkData() {
    return downlinkData;
    }

    @JsonProperty("downlinkData")
    public void setDownlinkData(String downlinkData) {
    this.downlinkData = downlinkData;
    }

    @JsonAnyGetter
    public Map<String, Object> getAdditionalProperties() {
    return this.additionalProperties;
    }

    @JsonAnySetter
    public void setAdditionalProperty(String name, Object value) {
    this.additionalProperties.put(name, value);
    }

}

但是基于这个 POJO,我无法设置 deviceID:

DownlinkCallbackResponse downlinkCallbackResponse = new DownlinkCallbackResponse ();

        DeviceId deviceId = new DeviceId();
        deviceId.setDownlinkData(data);     
        downlinkCallbackResponse.setDeviceId(deviceId);

        return new ResponseEntity<>(downlinkCallbackResponse, HttpStatus.OK);

最佳答案

获取以下 json 字符串

 { "downlinkData" : "deadbeefcafebabe"}

创建 json 对象(库:java-json.jar)

 JSONObject obj = new JSONObject();

将上面的json字符串放入json对象中。

 obj.put("333ee", jsonString);

这将创建以下 json 字符串

{

"333ee" : { "downlinkData" : "deadbeefcafebabe"}
}

希望这对您有帮助。 :-)

关于JAVA json架构2 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44292729/

相关文章:

java - 如何设置Tomcat的编码类型?

java - Android:如何处理嵌入在使用 JSON 检索的字符串中的 html <img/> 标签

javascript - 让 jStorage 工作

javascript - 如何将 JSON 变量更改为 3 个具有相同值的变量?

java - 在 Jackson 的 JsonDeserializer 中获取检测到的泛型类型

java - Jackson - 在运行时修改属性而无需注释

java - DynamoDB 中的全局二级索引

java - 缺少依赖项版本 - io.vertx :vertx-stack-depchain:jar is missing 为 'dependencies.dependency.version'

通过引用链: java. util.HashMap出现java.lang.UnsupportedOperationException

java - Kafka序列化-反序列化问题