-1
我有一些JSON響應:如何將JSON對象拆分爲列表(GSON,Android)?
{
"address": "0a1ac9b9a342c3600995845eec7254df664d6aa9",
"workers": {
"desktop-380h0l6": {
"worker": "desktop-380h0l6",
"hashrate": "92.2 MH/s",
"reportedHashRate": "81.6 MH/s",
"validShares": 81,
"invalidShares": 0,
"staleShares": 3,
"workerLastSubmitTime": 1499408997,
"invalidShareRatio": 0
},
"eco-001": {
"worker": "eco-001",
"hashrate": "121.1 MH/s",
"reportedHashRate": "130.1 MH/s",
"validShares": 109,
"invalidShares": 0,
"staleShares": 0,
"workerLastSubmitTime": 1499408985,
"invalidShareRatio": 0
},
"eco-002": {
"worker": "eco-002",
"hashrate": "114.1 MH/s",
"reportedHashRate": "108.5 MH/s",
"validShares": 102,
"invalidShares": 0,
"staleShares": 1,
"workerLastSubmitTime": 1499408993,
"invalidShareRatio": 0
},
"eco-003": {
"worker": "eco-003",
"hashrate": "125.5 MH/s",
"reportedHashRate": "129.6 MH/s",
"validShares": 111,
"invalidShares": 0,
"staleShares": 3,
"workerLastSubmitTime": 1499408969,
"invalidShareRatio": 0
}
}
我需要將對象「工人」分成列表。我怎樣才能做到這一點?在我的項目中,我使用GSON進行改造。我認爲這樣的代碼會幫助我,但我錯了:
public class WorkersDeserializer implements JsonDeserializer<Workers> {
@Override
public Workers deserialize(JsonElement json,
Type typeOfT,
JsonDeserializationContext context) throws JsonParseException {
final JsonObject jsonObject = json.getAsJsonObject();
List<Worker> list = new LinkedList<>();
jsonObject.entrySet().forEach(new Consumer<Map.Entry<String, JsonElement>>() {
@Override
public void accept(Map.Entry<String, JsonElement> stringJsonElementEntry) {
list.add(context.deserialize(stringJsonElementEntry.getValue(), Workers.class));
}
});
Workers w =new Workers();
w.setWorkers(list);
return w;
}
}
謝謝你的幫助。
你有JSON源的控制?如果是的話,使'工作人員'數組將變得更容易。關鍵是不需要的,因爲它已經在對象中。 – Joshua
@Joshua 不幸的是,我沒有這樣的控制。你有一些想法如何分裂? –