Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在LinkedHashMap中返回JSON到java对象_Java_Json_Jackson - Fatal编程技术网

在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转换为您想要的对象类型?