java - How do I deserialize flat JSON into multiple instances of a sub-class? -
i got flat json string like
{"ccy":"eur", "value1":500, "value2":200, "date":"2017-07-25", "type":"", ... <many other pairs>}
the json string shall deserialized in java using jackson:
public class data { @jsonproperty("ccy") private string currency; private amount value1; private amount value2; @jsonproperty("date") private string date; @jsonproperty("type") private string type; ... <many other members> }
with
public class amount { private double value; private string currency; public amount(double value, string currency) { this.value = value; this.currency = currency; } }
what correct use of jackson annotations fill value1 , value2 fields in data class?
i tried custom setters like:
@jsonsetter("value1") private void setvalue1(double value1) { this.value1 = new amount(value1, this.currency); } @jsonsetter("value2") private void setvalue2(double value2) { this.value2 = new amount(value2, this.currency); }
but works if this.currency
deserialized first (what cannot rely on).
is there neat solution not use custom constructor data(@jsonproperty("value1") double value1, (@jsonproperty("value2") double value2, (@jsonproperty("ccy") string currency) {...}
?
edit: approach uses jackson preferred.
you can use gson library.
it's easy approach. assume class "user"
gson gson = new gson(); string jsoninstring = "{\"userid\":\"1\",\"username\":\"yasir\"}"; user user= gson.fromjson(jsoninstring, user.class);
add using dependency
<dependency> <groupid>com.google.code.gson</groupid> <artifactid>gson</artifactid> <version>2.6.2</version> </dependency>
hope helps
Comments
Post a Comment