blob: aca5c807b5b129268e4d7de47dd7f7b272ab96d5 [file] [log] [blame]
package sample;
import java.util.HashMap;
import java.util.Map;
import org.codehaus.jackson.annotate.JsonAnyGetter;
import org.codehaus.jackson.annotate.JsonAnySetter;
import org.codehaus.jackson.annotate.JsonCreator;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.ObjectMapper;
/**
* Example of how @JsonAnyGetter and @JsonAnySetter can be used to
* create extensible "beans" (dyna-beans)
*
* @since 1.9
*/
public class DynaBean
{
// Two mandatory properties
public int id;
public String name;
// and then "other" stuff:
protected Map<String,Object> other = new HashMap<String,Object>();
@JsonCreator
public DynaBean(@JsonProperty("id") int id, @JsonProperty("name") String name)
{
this.id = id;
this.name = name;
}
@JsonAnyGetter
public Map<String,Object> any() {
return other;
}
@JsonAnySetter
public void set(String name, Object value) {
other.put(name, value);
}
public static void main(String[] args) throws Exception
{
DynaBean bean = new DynaBean(13, "Bob");
bean.set("age", Integer.valueOf(37));
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(bean);
System.out.println("JSON in: "+json);
// should also come back ok
/*DynaBean result =*/ mapper.readValue(json, DynaBean.class);
}
}