我正在使用com.google.gson
和注释@SerializedName
。
使用@SerialiazedName("@foo")
时,由于'@'
(See source code),它会抛出IllegalArgumentException。
将JSONLint与{ "@foo": 1 }
一起使用时,结果是一个有效的JSON对象。
为什么Google Gson会在这种情况下抛出异常? '@'
是否为JSON属性的无效字符?
答案 0 :(得分:1)
这是Gson的一个非常古老的版本。我们已经2.3.1了。考虑更新。
以下工作正常
public class GsonTest {
public static void main(String[] args) throws Exception {
System.out.println(new Gson().toJson(new Allowed()));
}
}
class Allowed {
@SerializedName("@val")
private String val = "Hey";
}
并打印
{"@val":"Hey"}
您使用的版本无论出于何种原因都不支持它。
See here.修正了1.7。