【发布时间】:2016-07-16 03:07:04
【问题描述】:
我正在尝试反序列化一条消息,但下面的语句出现异常。
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
【问题讨论】:
-
gson.fromJson...问题不是正斜杠,而是整个字符串...不是 JSON -
我很困惑你想要什么。你正在使用 Gson 将字符串转换为字符串?请在minimal reproducible example 中显示您的实际代码和 JSON 对象
-
不,不是。你没看到你在做什么吗?你已经有一个字符串了。你为什么要尝试用 Gson 反序列化它?
-
JSONObject已经类似于Map。您可以在两者中获取和输入值。你想要的只是在两者之间进行转换? -
@cricket_007 我们有一个自定义的反序列化器来反序列化一个.ser文件,上面的代码是创建一个Map
标签: java json gson deserialization