【发布时间】:2021-05-03 12:57:33
【问题描述】:
我有问题。我有以下 JSON:
{
"Market":"USDT",
"Coin":"BTC",
"Period":"1h",
"EmergencyPerc":-25,
"TakeProfitPerc":1.2,
"ProtectiveOrdersEnabled":"no",
"EMACrossMarginPerc":0.08,
"EMABuySellPeriod":"5m",
"EMABuySellNameLow":"EMA5",
"EMABuySellNameHigh":"EMA20",
"EMAUnfreezePeriod":"1h",
"EMAUnfreezeNameLow":"EMA20",
"EMAUnfreezeNameHigh":"EMA200",
"SimTemplate":"t001",
"PriceDropSells":[
{
"Period":"3h",
"Number":"4",
"Perc":"-1.0"
},
{
"Period":"1h",
"Number":"2",
"Perc":"-2.0"
}
]
}
在我的 java 类中,我添加了以下代码以将 Json 作为对象解析为当前类:
public class AgentStrategy {
private String market;
private String coin;
private String period;
private double emergencyPerc;
private double takeProfitPerc;
private String protectiveOrdersEnabled;
private double EMACrossMarginPerc;
private String EMABuySellPeriod;
private String EMABuySellNameLow;
private String EMABuySellNameHigh;
private String EMAUnfreezePeriod;
private String EMAUnfreezeNameLow;
private String EMAUnfreezeNameHigh;
private String simTemplate;
private ArrayList<AgentStrategyPriceDropSells> priceDropSells = new ArrayList<>();
public AgentStrategy parseJsonToObject(String jsonString) {
Gson gson = new Gson();
gson.fromJson(jsonString, AgentStrategy.class);
Map map = gson.fromJson(jsonString, Map.class);
this.market = map.get("Market").toString();
this.coin = map.get("Coin").toString();
this.period = map.get("Period").toString();
this.emergencyPerc = Double.parseDouble(map.get("EmergencyPerc").toString());
this.takeProfitPerc = Double.parseDouble(map.get("TakeProfitPerc").toString());
this.protectiveOrdersEnabled = map.get("ProtectiveOrdersEnabled").toString();
this.EMACrossMarginPerc = Double.parseDouble(map.get("EMACrossMarginPerc").toString());
this.EMABuySellPeriod = map.get("EMABuySellPeriod").toString();
this.EMABuySellNameLow = map.get("EMABuySellNameLow").toString();
this.EMABuySellNameHigh = map.get("EMABuySellNameHigh").toString();
this.EMAUnfreezePeriod = map.get("EMAUnfreezePeriod").toString();
this.EMAUnfreezeNameLow = map.get("EMAUnfreezeNameLow").toString();
this.EMAUnfreezeNameHigh = map.get("EMAUnfreezeNameHigh").toString();
this.simTemplate = map.get("SimTemplate").toString();
// PRICE DROP SELLS
Map priceDropSellsMap = (Map) map.get("PriceDropSells");
// ???
return this;
}
private class PriceDropSell {
private String period;
private String number;
private double perc;
}
}
该函数应该返回一个完全填充的对象,但我正在努力处理ArrayList<PriceDropSell>。问题是我不知道如何将我的 JSON 中的PriceDropSells 存储为ArrayList<PriceDropSell>。除了 PriceDropSell,每个字段都存储在 AgentStrategy 类中。如何将该部分解析为 ArrayList?
【问题讨论】:
-
那么,
map.get("PriceDropSells")是一个数组,这个数组里面是什么? -
数组如下所示:
[{Period=4h, Number=4, Perc=-1.0}, {Period=1h, Number=2, Perc=-2.0}]
标签: java json dictionary arraylist