我正在尝试反序列化一条消息,并且我收到了以下声明的异常。
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
答案 0 :(得分:-1)
据我所知,JSON中的斜线字符应该被转义。尝试将/
替换为\/
。
此外,您可以使用String.class
代替Class.forName("java.lang.String")
scince,它更加类型安全。