package org.knowm.xchange.bter.dto.marketdata; import java.io.IOException; import java.math.BigDecimal; import org.knowm.xchange.bter.dto.marketdata.BTERPublicOrder.BTERPublicOrderDeserializer; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.ObjectCodec; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; @JsonDeserialize(using = BTERPublicOrderDeserializer.class) public class BTERPublicOrder { private final BigDecimal price; private final BigDecimal amount; private BTERPublicOrder(BigDecimal price, final BigDecimal amount) { this.price = price; this.amount = amount; } public BigDecimal getPrice() { return price; } public BigDecimal getAmount() { return amount; } @Override public String toString() { return "BTERPublicOrder [price=" + price + ", amount=" + amount + "]"; } static class BTERPublicOrderDeserializer extends JsonDeserializer<BTERPublicOrder> { @Override public BTERPublicOrder deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { final ObjectCodec oc = jp.getCodec(); final JsonNode tickerNode = oc.readTree(jp); final BigDecimal price = new BigDecimal(tickerNode.path(0).asText()); final BigDecimal amount = new BigDecimal(tickerNode.path(1).asText()); return new BTERPublicOrder(price, amount); } } }