如何从 Json 元素创建域对象?

问题描述

外部 Web 服务返回给我一个表单的 Json 文件 {"预测":[{"period_end":"2021-01-15T01:00:00.0000000Z","period":"PT30M","ghi90":0,"ghi":0,"ghi10":0},{"period_end":"2021-01-15T01:30:00.0000000Z",{"period_end" :"2021-01-15T02:00:00.0000000Z","ghi10":0}]}

使用 RestRespone 转换 json 元素

RestResponse resp = rest.get(url)

  resp.json instanceof JsonElement
   

如何从 Json 元素变量创建域对象,知道我的包装类是

class ForecastGhi {

static constraints = {
}

private ArrayList<IrradianciaGlobalHorizontal> forecast


ArrayList<IrradianciaGlobalHorizontal> getForecast() {
    return forecast
}

void setForecast(ArrayList<IrradianciaGlobalHorizontal> forecast) {
    this.forecast = forecast
}

}

和depersist域类是

class IrradianciaGlobalHorizo​​ntal {

static constraints = {
}
@JsonProperty("all")  

private def period_end
private def period
private def ghi90
private def ghi
private def ghi10

def getGhi() {
     this.ghi
}

void setGhi(int ghi) {
    this.ghi = ghi
}

def getGhi90() {
    this.ghi90
}

void setGhi90(int ghi90) {
    this.ghi90 = ghi90
}

def getGhi10() {
    this.ghi10
}

void setGhi10(int ghi10) {
    this.ghi10 = ghi10
}

def getPeriod_end() {
     this.period_end
}

void setPeriod_end(Date period_end) {
    this.period_end = period_end
}

def getPeriod() {
    this.period
}

void setPeriod(String period) {
    this.period = period
}

}

请帮忙;非常感谢

解决方法

这是您的 API 实现的问题;端点更改了域字段名称和/或域名。这会导致将上述数据带回时出现问题。

那个或前端与端点的 API 文档不匹配。

字段名称/域名应与域/资源匹配,除非您要进行一定程度的混淆,然后接受您将需要一个中间层来充当翻译器(即 EDI)。

您希望输出能够被同一端点读取为输入,只需更改请求方法即可。

我的建议(最简单的解决方案):更改原始端点以匹配域/资源字段名称