I have JSON that represents ConfigValue
(parameter param
is representation of ConfigParameter
):
<code>{"value":10,"param":{"name":"size","type":"BIG_DECIMAL","class":"java.math.BigDecimal","required":true}}
</code>
<code>{"value":10,"param":{"name":"size","type":"BIG_DECIMAL","class":"java.math.BigDecimal","required":true}}
</code>
{"value":10,"param":{"name":"size","type":"BIG_DECIMAL","class":"java.math.BigDecimal","required":true}}
To de/serialize ConfigParameter
I use serializer class:
<code>public class ConfigParamSerializer extends StdSerializer<ConfigParameter> {
public ConfigParamSerializer() {
this(null);
}
public ConfigParamSerializer(Class<ConfigParameter> t) {
super(t);
}
@Override
public void serialize(
ConfigParameter value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
throws IOException {
jsonGenerator.writeStartObject();
jsonGenerator.writeObjectField("name", value.getName());
jsonGenerator.writeObjectField("type", value.getType());
jsonGenerator.writeObjectField("class", value.getType().getClassName());
jsonGenerator.writeObjectField("required", value.isReguired());
jsonGenerator.writeEndObject();
}
}
</code>
<code>public class ConfigParamSerializer extends StdSerializer<ConfigParameter> {
public ConfigParamSerializer() {
this(null);
}
public ConfigParamSerializer(Class<ConfigParameter> t) {
super(t);
}
@Override
public void serialize(
ConfigParameter value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
throws IOException {
jsonGenerator.writeStartObject();
jsonGenerator.writeObjectField("name", value.getName());
jsonGenerator.writeObjectField("type", value.getType());
jsonGenerator.writeObjectField("class", value.getType().getClassName());
jsonGenerator.writeObjectField("required", value.isReguired());
jsonGenerator.writeEndObject();
}
}
</code>
public class ConfigParamSerializer extends StdSerializer<ConfigParameter> {
public ConfigParamSerializer() {
this(null);
}
public ConfigParamSerializer(Class<ConfigParameter> t) {
super(t);
}
@Override
public void serialize(
ConfigParameter value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
throws IOException {
jsonGenerator.writeStartObject();
jsonGenerator.writeObjectField("name", value.getName());
jsonGenerator.writeObjectField("type", value.getType());
jsonGenerator.writeObjectField("class", value.getType().getClassName());
jsonGenerator.writeObjectField("required", value.isReguired());
jsonGenerator.writeEndObject();
}
}
and deserialization class:
<code>public class ConfigParamDeserializer extends StdDeserializer<ConfigParameter> {
public ConfigParamDeserializer() {
this(null);
}
public ConfigParamDeserializer(Class<ConfigParameter> t) {
super(t);
}
@Override
public ConfigParameter deserialize(
JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
final JsonNode node = jsonParser.getCodec().readTree(jsonParser);
String name = node.get("name").asText();
ParamType type = ParamType.fromCodeName(node.get("type").asText());
boolean required = ObjectUtils.safeBoolean(node.get("required").asText());
return Assembler.create(name,type,required);
}
}
</code>
<code>public class ConfigParamDeserializer extends StdDeserializer<ConfigParameter> {
public ConfigParamDeserializer() {
this(null);
}
public ConfigParamDeserializer(Class<ConfigParameter> t) {
super(t);
}
@Override
public ConfigParameter deserialize(
JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
final JsonNode node = jsonParser.getCodec().readTree(jsonParser);
String name = node.get("name").asText();
ParamType type = ParamType.fromCodeName(node.get("type").asText());
boolean required = ObjectUtils.safeBoolean(node.get("required").asText());
return Assembler.create(name,type,required);
}
}
</code>
public class ConfigParamDeserializer extends StdDeserializer<ConfigParameter> {
public ConfigParamDeserializer() {
this(null);
}
public ConfigParamDeserializer(Class<ConfigParameter> t) {
super(t);
}
@Override
public ConfigParameter deserialize(
JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
final JsonNode node = jsonParser.getCodec().readTree(jsonParser);
String name = node.get("name").asText();
ParamType type = ParamType.fromCodeName(node.get("type").asText());
boolean required = ObjectUtils.safeBoolean(node.get("required").asText());
return Assembler.create(name,type,required);
}
}
Q: Now I would like to use these classes to help deserialize mentioned ConfigValue
JSON; I am not sure how to call ConfigParamDeserializer
to deserialize JSON to get instance of ConfigParameter
class?