Я пытаюсь обработать JSON-объект в Java-объект, используя несколько bean-компонентов и GSON.Однако ключи в коде JSON, который я использую, могут со временем меняться в зависимости от того, что было продано в последнее время.Я могу вручную создать файл компонента, который включает в себя каждый код валюты, но, в конце концов, все они могут быть разными, и моя программа не работает.
Вот мой код:
Из моего основного класса:
public void updateData() {
Data data;
String s = null;
try {
s = DataGetter.getJSON("http://bitcoincharts.com/t/weighted_prices.json");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
s = s.replaceAll("7d", "week");
s = s.replaceAll("30d", "month");
s = s.replaceAll("24h", "day");
s = s.toLowerCase();
data = new Gson().fromJson(s, Data.class);
}
Data.java:
package tehsusenoh.bittick.get;
import java.util.ArrayList;
import java.util.List;
public class Data {
public enum Currency {
USD, AUD, RUB, GAU, BGN, CNY, SLL, INR, GBP, PLN, SAR, EUR, CLP, CAD
}
private CurrencyData usd;
private CurrencyData aud;
private CurrencyData rub;
private CurrencyData gau;
private CurrencyData bgn;
private CurrencyData cny;
private CurrencyData sll;
private CurrencyData inr;
private CurrencyData gbp;
private CurrencyData pln;
private CurrencyData sar;
private CurrencyData eur;
private CurrencyData clp;
private CurrencyData cad;
public List<CurrencyData> getData() {
List<CurrencyData> d = new ArrayList<CurrencyData> ();
d.add(usd);
d.add(aud);
d.add(rub);
d.add(gau);
d.add(bgn);
d.add(cny);
d.add(sll);
d.add(inr);
d.add(gbp);
d.add(pln);
d.add(sar);
d.add(eur);
d.add(clp);
d.add(cad);
return d;
}
public CurrencyData get(Currency c) {
switch (c) {
case USD: {
return usd;
}
case AUD: {
return aud;
}
case RUB: {
return rub;
}
case GAU: {
return gau;
}
case BGN: {
return bgn;
}
case CNY: {
return sll;
}
case INR: {
return inr;
}
case GBP: {
return gbp;
}
case PLN: {
return pln;
}
case SAR: {
return sar;
}
case EUR: {
return eur;
}
case CLP: {
return clp;
}
case CAD: {
return cad;
}
default: {
return null;
}
}
}
public void addCodes() {
usd.setCode("USD");
aud.setCode("AUD");
rub.setCode("RUB");
gau.setCode("GAU");
bgn.setCode("BGN");
cny.setCode("CNY");
sll.setCode("SLL");
inr.setCode("INR");
gbp.setCode("GBP");
pln.setCode("PLN");
sar.setCode("SAR");
eur.setCode("EUR");
clp.setCode("CLP");
cad.setCode("CAD");
}
public String toString() {
return "" + getData();
}
}
И, наконец, CurrencyData.java:
package tehsusenoh.bittick.get;
public class CurrencyData {
private Double week;
private Double month;
private Double day;
private String code;
public CurrencyData() {}
public Double getWeek() { return week; }
public Double getMonth() { return month; }
public Double getDay() { return day; }
public String getCode() { return code; }
public void setWeek(Double d) { week = d; }
public void setMonth(Double d) { month = d; }
public void setDay(Double d) { day = d; }
public void setCode(String aCode) { code = aCode; }
public String toString() {
return code + ":: week:" + week + " month:" + month + " day:" + day;
}
}