Google Gson不允许' @'在属性名称中

时间:2014-12-01 22:57:00

标签: java json gson

我正在使用com.google.gson和注释@SerializedName。 使用@SerialiazedName("@foo")时,由于'@'See source code),它会抛出IllegalArgumentException。

将JSONLint与{ "@foo": 1 }一起使用时,结果是一个有效的JSON对象。

为什么Google Gson会在这种情况下抛出异常? '@'是否为JSON属性的无效字符?

1 个答案:

答案 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。