相关疑难解决方法(0)

找不到[简单类型,类com.comcast.ivr.core.domain.AutoHandlingSlotKey]类型的(Map)密钥反序列化器

我有一个具有Map的域对象:

private Map<AutoHandlingSlotKey, LinkedHashSet<AutoFunction>> autoHandling;
Run Code Online (Sandbox Code Playgroud)

当我序列化对象时,我得到了这个:

"autoHandling" : [ "java.util.HashMap", {
} ],
Run Code Online (Sandbox Code Playgroud)

这个Map的关键是一个自定义对象:

public class AutoHandlingSlotKey implements Serializable {
    private FunctionalArea slot; // ENUM
    private String returnView;   // ENUM
Run Code Online (Sandbox Code Playgroud)

所以,我不确定如何纠正我在反序列化对象时遇到的这个问题:

org.codehaus.jackson.map.JsonMappingException: Can not find a (Map) Key deserializer for type [simple type, class com.comcast.ivr.core.domain.AutoHandlingSlotKey]
Run Code Online (Sandbox Code Playgroud)

如果我没有访问域对象进行修改,有人可以帮助我理解如何纠正这个问题吗?

java json jackson deserialization

41
推荐指数
2
解决办法
4万
查看次数

杰克逊地图序列化模块

我有一个包含Map(带非String键)和其他一些字段的Class.

public class MyClass() {
    private Map<KeyObject, OtherObject> map;
    private String someField;

    public MyClass(Map<KeyObject, OtherObject> map, String someField) {
        this.map = map;
        this.someField = someField;
    }

    // Getters & Setters
}
Run Code Online (Sandbox Code Playgroud)

我想使用Jackson对这个类进行序列化和反序列化.我看到了不同的方法,并决定尝试使用jackson模块.

我按照这篇文章并扩展了JsonDeserializer和JsonSerializer.问题是应该键入这些类,所以看起来应该是这样的

public class keyDeserializer extends JsonDeserializer<Map<KeyObject, OtherObject>> {
...
}
Run Code Online (Sandbox Code Playgroud)

KeySerializer也是如此.

然后添加到模块:

module.addSerializer(new keySerializer());
module.addDeserializer(Map.class, new keyDeserializer());
Run Code Online (Sandbox Code Playgroud)

但这显然是错误的,因为我得到了一个例外:

keySerializer does not define valid handledType() -- must either register with method that takes type argument  or make serializer extend 'org.codehaus.jackson.map.ser.std.SerializerBase'
Run Code Online (Sandbox Code Playgroud)

我可以将我的序列化器和反序列化器输入MyClass,但后来我必须手动解析所有这些,这是不合理的.

更新:

我设法通过使用注释绕过代码中的模块创建 …

java serialization map jackson jackson-modules

7
推荐指数
1
解决办法
7234
查看次数

在Jackson中序列化/反序列化自定义Map &lt;Key,Object&gt;

我有一个非常简单的Map,想在Jackson中进行序列化和反序列化,但是我无法使其正常工作。

我尝试了以下方法:

@JsonSerialize(keyUsing=TurnKeySerializer.class)
@JsonDeserialize(keyUsing = TurnKeyDeserializer.class)
Map<TurnKey, PlayerTurn> publicTurns = new TreeMap<>();

@JsonIgnoreProperties(ignoreUnknown = true)
@Data //Creates Getter/Setter etc
public class TurnKey implements Comparable<TurnKey> {
    private final int turnNumber;
    private final String username;

    public TurnKey(int turnNumber, String username) {
        this.turnNumber = turnNumber;
        this.username = username;
    }

    @Override
    public int compareTo(TurnKey o) {
        int v = Integer.valueOf(turnNumber).compareTo(o.getTurnNumber());
        if (v != 0) {
            return v;
        }
        return username.compareTo(o.getUsername());
    }

    @Override
    public String toString() {
        return "{" +
                "turnNumber:" + turnNumber +
                ", …
Run Code Online (Sandbox Code Playgroud)

java serialization jackson deserialization

5
推荐指数
1
解决办法
2504
查看次数

如何有效地将JAVA对象转换为JSON ..?

我正在使用骡子.我有一个JAVA对象,从我的内部类填充..它实际上是一个HashMap<String,Object>.Object可以是任何东西..另一个HashMap,或其他List..现在我必须将其转换为JSON(并删除所有那些值为NULL的键)..

当我使用给定的Mule Transformer时ObjectToJSON,它正在转换为适当的JSON ..但是无法删除NULL值.并且我找不到要在Custom-transformer中设置的任何属性,这将删除NULL值.. !!


那么,我写了一个自定义变换器,使用该net.sf.json-lib库,我能够删除NULL值.

但是在我的一个JAVA对象中,我有一个HashMap<Integer,String>,因为在JSON对象中,Integer不能是键,net.sf.json库给出了一个例外:

Exception stack is:
1. JSON keys must be strings. (java.lang.ClassCastException)
  net.sf.json.JSONObject:1120 (null)
2. java.lang.ClassCastException: JSON keys must be strings. (net.sf.json.JSONException)
  net.sf.json.JSONObject:1160 (null)
3. java.lang.ClassCastException: JSON keys must be strings. (net.sf.json.JSONException). Message payload is of type: HashMap (org.mule.api.transformer.TransformerMessagingException)
Run Code Online (Sandbox Code Playgroud)

所以它无法将其转换为JSON ..


那么什么是最可行的选择.. ??

java json transformer-model mule

2
推荐指数
1
解决办法
9247
查看次数