【发布时间】:2022-08-20 02:49:52
【问题描述】:
我正在尝试将 JSON 响应解析为 Java 对象,然后我想将其保存到 Postgresql。
我有以下 json 响应:
{
\"success\": 1,
\"results\": [
{
\"FI\": \"120986750\",
\"event_id\": \"5164306\",
\"cards\": {
\"updated_at\": \"1660559432\",
\"key\": \"AAA100\",
\"sp\": {
\"cards\": {
\"id\": \"1\",
\"name\": \"Cards\",
\"odds\": [
{
\"id\": \"101\",
\"odds\": \"2.200\",
\"header\": \"Over\",
\"name\": \"11\"
},
{
\"id\": \"102\",
\"odds\": \"8.500\",
\"header\": \"Exactly\",
\"name\": \"11\"
},
{
\"id\": \"103\",
\"odds\": \"1.909\",
\"header\": \"Under\",
\"name\": \"11\"
}
]
}
}
},
\"corners\": {
\"updated_at\": \"1660559431\",
\"key\": \"AAA200\",
\"sp\": {
\"corners\": {
\"id\": \"2\",
\"name\": \"Corners\",
\"odds\": [
{
\"id\": \"201\",
\"odds\": \"2.200\",
\"header\": \"Over\",
\"name\": \"10\"
},
{
\"id\": \"202\",
\"odds\": \"8.500\",
\"header\": \"Exactly\",
\"name\": \"10\"
},
{
\"id\": \"203\",
\"odds\": \"1.909\",
\"header\": \"Under\",
\"name\": \"10\"
}
]
},
\"total_corners\": {
\"id\": \"3\",
\"name\": \"Total Corners\",
\"odds\": [
{
\"id\": \"204\",
\"odds\": \"17.000\",
\"name\": \"Under 6\"
},
{
\"id\": \"205\",
\"odds\": \"4.333\",
\"name\": \"6 - 8\"
},
{
\"id\": \"206\",
\"odds\": \"2.750\",
\"name\": \"9 - 11\"
},
{
\"id\": \"207\",
\"odds\": \"3.400\",
\"name\": \"12 - 14\"
},
{
\"id\": \"208\",
\"odds\": \"5.500\",
\"name\": \"Over 14\"
}
]
}
}
}
}
]
}
我开始创建一个这样的类:
public class PreMatchOdds {
@JsonProperty(\"success\")
private Integer success;
@JsonProperty(\"results\")
private List<Result> results = null;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
private final static long serialVersionUID = -8631993296159893856L;
getter and setters..
然后代替
@JsonProperty(\"cards\")
private Cards cards;
and
@JsonProperty(\"corners\")
private Corners corners;
我试过:
@JsonProperty(\"categories\")
@JsonAlias({\"cards\", \"corners\"})
private Categories categories;
在结果类中
public class Result implements Serializable {
@JsonProperty(\"FI\")
private String fi;
@JsonProperty(\"event_id\")
private String eventId;
@JsonProperty(\"categories\")
@JsonAlias({\"cards\", \"corners\"})
private Categories categories;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
private final static long serialVersionUID = -683759794150688410L;
正确的方法是如何做到这一点,或者我必须为每个卡片和角落对象创建一个类?这只是一个例子,但在我的真实案例中,我有 20 个这样的对象。 我还想将对象键名设置为一个变量,因为我想将它映射到数据库中的一个字段。
我已经尝试并用谷歌搜索但没有找到我正在寻找或不真正理解的内容。 最后,我想将它保存到数据库中的表中,如下所示:
| FI | event_id | category | updated_at | key | market_id | market | odds_id | odds | header | handicap | name |
|---|---|---|---|---|---|---|---|---|---|---|---|
| FI value | event_id | value | \"cards\" | updated_at | AAA100 | cards.id | cards.name | odds.id | odds.odds | odds.header | odds.handicap |
| \"corners\" | AAA200 | corners.id | corners.name | odds.id | odds.odds | odds.header | odds.handicap | odds.name | |||
| Example | |||||||||||
| 120986750 | 5164306 | cards | 1660559432 | AAA100 | 1 | Cards | 101 | 2.2 | Over | 11 | |
| 120986750 | 5164306 | cards | 1660559432 | AAA100 | 1 | Cards | 102 | 8.5 | Exatly | 11 | |
| 120986750 | 5164306 | cards | 1660559432 | AAA100 | 1 | Cards | 103 | 1.909 | Under | 11 | |
| 120986750 | 5164306 | corners | 1660559431 | AAA200 | 2 | Corners | 201 | 2.2 | Over | 10 | |
| 120986750 | 5164306 | corners | 1660559431 | AAA200 | 2 | Corners | 202 | 8.5 | Exatly | 10 | |
| 120986750 | 5164306 | corners | 1660559431 | AAA200 | 2 | Corners | 203 | 1.909 | Under | 10 |