是。在JSON字段名称中允许使用char?

时间:2011-04-05 12:18:35

标签: json

是的。在JSON字段名称中允许使用char?

 java.lang.IllegalArgumentException: instance.id is not a valid JSON field name.
at com.google.gson.JsonFieldNameValidator.validate(JsonFieldNameValidator.java:52)

Atleast gson图书馆似乎在抱怨。但我在json spec中找不到任何东西。

请注意,我已经序列化了名称注释,以避免在java字段名称中出现问题。

@SerializedName("instance.id")
private String instanceId;

更新

这是序列化名称中的错误,这是我所做的修复:

   @SdeSerializedName("instance.id")
   private String instanceId;

     new GsonBuilder().setFieldNamingStrategy
        (new FieldNamingStrategy() {
            public String translateName(final Field field) {
                final SdeSerializedName annotation = field.getAnnotation(SdeSerializedName.class);
                return ((null != annotation) && null != annotation.value()) ? annotation.value() : field.getName();
            }
        })

2 个答案:

答案 0 :(得分:0)

JSON本身允许,但是(如果我正确理解GSON文档)错误消息是因为它无法将instance.id映射到同名的Java类成员。

看一下关于映射字段名称的类似问题的跟随线程:

http://groups.google.com/group/google-gson/tree/browse_frm/month/2010-05/e575bb65cdd30410?rnum=31&_done=/group/google-gson/browse_frm/month/2010-05?&pli=1

答案 1 :(得分:-1)

由于点“。”已经是javascript中对象和成员名称之间的分隔符(这是json发起的地方),它不能是有效的字段名。