我使用jsonProperty annonation将json值映射到pojo对象中的变量。
{
"valueSet": [
{
"name": "Type_int",
"value": 123
},
{
"name": "Type_String",
"value": "ABC"
}
]
}
对于上面这个json,我使用Object类对象来捕获" value"属性值。 像
@JsonProperty("value")
private Object value;
这样可以捕获"整数"和"字符串"值。
但对于以下情况
{
"valueSet": [
{
"name": "Type_int",
"value": 123
},
{
"name": "Type_String",
"value": "ABC"
},
{
"name": "Type_array",
"value": [
{
"x": 0,
"y": 0
},
{
"x": 10,
"y": 10
},
{
"x": 20,
"y": 20
}
]
}
]
}
"值"有三种不同的数据类型。 attribute.I不能使用Object来捕获值。那么,有没有办法捕获"值"中的所有值?属性。
答案 0 :(得分:0)
试试我的运气,使用以下代码,
值类
public class Value {
@JsonProperty("name")
private String name;
@JsonProperty("value")
private Object value;
@JsonProperty("value")
private ValueObject valueObject;
//setters and getters
}
ValueSet 类
public class ValueSet {
@JsonProperty("valueSet")
private List<Value> l;
//setters & getters
}
ValueObject 类
public class ValueObject {
@JsonProperty("x")
private int x;
@JsonProperty("y")
private int y;
//setters & getters
}
测试方法
@Test
public void test() {
String input = "{\"valueSet\":[{\"name\":\"Type_int\",\"value\":123},{\"name\":\"Type_String\",\"value\":\"ABC\"},{\"name\":\"Type_array\",\"value\":[{\"x\":0,\"y\":0},{\"x\":10,\"y\":10},{\"x\":20,\"y\":20}]}]}";
//String input = "{\"valueSet\":[{\"name\":\"Type_int\",\"value\":123},{\"name\":\"Type_String\",\"value\":\"ABC\"}]}";
ObjectMapper mapper = new ObjectMapper();
try {
ValueSet v = mapper.readValue(input, ValueSet.class);
System.out.println(v);
} catch (IOException e) {
e.printStackTrace();
}
}
以相反的顺序输出。
ValueSet [l=[Value [name=Type_int, value=123], Value [name=Type_String, value=ABC]]]
ValueSet [l=[Value [name=Type_int, value=123], Value [name=Type_String, value=ABC], Value [name=Type_array, value=[{x=0, y=0}, {x=10, y=10}, {x=20, y=20}]]]]
添加toString()
方法以查看log
或控制台中的输出。不知怎的,这对我有用。不确定它是否适合你。
答案 1 :(得分:0)
<input type="range" id="rating" min="0" max="10">
<span id="output"></span>