反序列化json时,正斜杠不接受

时间:2016-03-28 19:15:37

标签: java json gson deserialization

我正在尝试反序列化一条消息,并且我收到了以下声明的异常。

Object key = gson.fromJson("40280381-3d27-5493-013d-4be146935c5c_abcdefg/ijklmnop", Class.forName("java.lang.String"));

由于字符串值中的/而发生异常,如果我删除正斜杠,则此代码工作正常。但我确实需要字符串值中的/,请在此帮助我。

实际方法

private void fillTheMap(JsonParser jp, Map<Object, Object> map) {
    JsonToken jt = jp.nextToken();
    while ((jt = jp.nextToken()) != JsonToken.END_ARRAY) {
        // Get the key.
        jt = jp.nextToken();

        String keyTypeName = jp.getCurrentName();
        keyTypeName = keyTypeName.replace(":mapKey", "");
        Class keyType = Class.forName(keyTypeName);

        jt = jp.nextToken();

        Object key = gson.fromJson(jp.getText(), keyType);

        Object value = deSerIze(jp);
        map.put(key, value);

        jt = jp.nextToken();
    }
}

异常

  

com.google.gson.stream.MalformedJsonException:使用JsonReader.setLenient(true)接受格式错误的JSON

1 个答案:

答案 0 :(得分:-1)

据我所知,JSON中的斜线字符应该被转义。尝试将/替换为\/

此外,您可以使用String.class代替Class.forName("java.lang.String") scince,它更加类型安全。