在LinkedHashMap中返回JSON到java对象
我有以下在LinkedHashMap中返回JSON到java对象,java,json,jackson,Java,Json,Jackson,我有以下json字符串:- {"name":"Test","sortlist":[],"filterlist":[{"fieldname":"regions_id","operator":"equals","value":{"id":1,"code":"HIGH","description":"HIGH Region","comment":"High Region","active":true}}]} 和Java类,如下所示: @JsonSerialize @JsonDeserialize p
json
字符串:-
{"name":"Test","sortlist":[],"filterlist":[{"fieldname":"regions_id","operator":"equals","value":{"id":1,"code":"HIGH","description":"HIGH Region","comment":"High Region","active":true}}]}
和Java类,如下所示:
@JsonSerialize
@JsonDeserialize
public class ItemFilter implements Serializable {
private String name;
private List<FieldFilter> filterlist = new ArrayList<FieldFilter>();
}
public class FieldFilter implements Serializable {
private static final long serialVersionUID = 1L;
private String fieldname;
private String operator;
private Object value;
}
public static ItemFilter convertItemFilter(String item) {
ObjectMapper mapper = new ObjectMapper();
try {
ItemFilter itemFilter = mapper.readValue(item, new TypeReference<ItemFilter>(){});
return itemFilter;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@JsonSerialize
@JsonDeserialize
公共类ItemFilter实现可序列化{
私有字符串名称;
私有列表过滤器列表=新的ArrayList();
}
公共类FieldFilter实现可序列化{
私有静态最终长serialVersionUID=1L;
私有字符串字段名;
私有字符串运算符;
私人客体价值;
}
我的转换方法如下:-
@JsonSerialize
@JsonDeserialize
public class ItemFilter implements Serializable {
private String name;
private List<FieldFilter> filterlist = new ArrayList<FieldFilter>();
}
public class FieldFilter implements Serializable {
private static final long serialVersionUID = 1L;
private String fieldname;
private String operator;
private Object value;
}
public static ItemFilter convertItemFilter(String item) {
ObjectMapper mapper = new ObjectMapper();
try {
ItemFilter itemFilter = mapper.readValue(item, new TypeReference<ItemFilter>(){});
return itemFilter;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
公共静态ItemFilter convertItemFilter(字符串项){
ObjectMapper mapper=新的ObjectMapper();
试一试{
ItemFilter ItemFilter=mapper.readValue(项,新类型引用(){});
返回项过滤器;
}捕获(例外e){
e、 printStackTrace();
}
返回null;
}
ItemFilter
域正在正确转换,但在私有对象值中代码>我得到的字段LinkedHashMap
我想得到一个简单的对象,稍后我会键入cast
有人能告诉我如何转义LinkedHashMap
并在变量中获得一个简单的Java
对象吗
我不能使用硬编码对象类型,因为它是一个通用的pojo,可以有任何对象类型。硬编码将使这个pojo变得更大,前端也需要进行更改。这就是我使用对象作为数据类型的原因 下面的类结构应该将JSON返回给“YourObject”
我不能使用它,因为它是一个通用的pojo,可以有任何对象类型。无法使用硬编码对象类型。这是一个问题。如果它确实转换为对象类型,那么它将在哪里保存“id”:1,“code”:“HIGH”,“description”:“HIGH Region”,“comment”:“HIGH Region”,“active”:true的值?由于找不到id、代码的任何相关字段,。。。它将其转换为linkedhashmap并在该映射中设置这些值。作为一种解决方法,为什么不为字段值创建一个setter并调用transformer API,将这个LinkedHashmap转换为您想要的对象类型?