mirror of
https://github.com/bwssytems/ha-bridge.git
synced 2025-12-18 16:17:30 +00:00
37 lines
1.4 KiB
Java
37 lines
1.4 KiB
Java
package com.bwssystems.HABridge.plugins.hass;
|
|
|
|
import java.lang.reflect.Type;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
import java.util.Map.Entry;
|
|
|
|
import com.google.gson.JsonDeserializationContext;
|
|
import com.google.gson.JsonDeserializer;
|
|
import com.google.gson.JsonElement;
|
|
import com.google.gson.JsonObject;
|
|
|
|
public class ServiceDeserializer implements JsonDeserializer<Service> {
|
|
private Map<String, ServiceElement> services;
|
|
private String domain;
|
|
@Override
|
|
public Service deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext ctx)
|
|
{
|
|
JsonObject objServices = json.getAsJsonObject();
|
|
String theKey;
|
|
domain = objServices.get("domain").getAsString();
|
|
JsonObject obj = objServices.get("services").getAsJsonObject();
|
|
services = new HashMap<String, ServiceElement>();
|
|
for(Entry<String, JsonElement> entry:obj.entrySet()){
|
|
ServiceElement theServiceElement = new ServiceElement();
|
|
theKey = entry.getKey();
|
|
JsonObject theRawDetail = obj.getAsJsonObject(theKey);
|
|
|
|
theServiceElement.setDescription(theRawDetail.get("description").getAsString());
|
|
theServiceElement.setField(ctx.deserialize(theRawDetail.get("fields"), Field.class));
|
|
services.put(theKey, theServiceElement);
|
|
}
|
|
return new Service(domain, services);
|
|
}
|
|
|
|
}
|