package com.msgilligan.bitcoinj.json.conversion; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonToken; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import org.bitcoinj.core.Coin; import java.io.IOException; import java.math.BigDecimal; /** * */ public class CoinDeserializer extends JsonDeserializer<Coin> { @Override public Coin deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException { JsonToken token = p.getCurrentToken(); switch (token) { case VALUE_NUMBER_FLOAT: BigDecimal bd = p.getDecimalValue(); return BitcoinMath.btcToCoin(bd); case VALUE_NUMBER_INT: long val = p.getNumberValue().longValue(); // should be optimal, whatever it is return Coin.valueOf(val); default: return (Coin) ctxt.handleUnexpectedToken(Coin.class, p); } } }