2011-04-05 18 views
1

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

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

Atleast gson库似乎在抱怨。但是我在json规范中找不到任何东西。

请注意,我已序列化的名称注释,以避免在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(); 
      } 
     }) 

回答

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

+0

但我确实有一个serialzedname注释 - 我已经更新了我的问题以澄清。所以它可能是serialzedname注释处理中的一个bug。 – Fakrudeen 2011-04-05 14:33:47

+0

这是serializedName注释中的一个错误。 Json规格。本身允许这一点。我添加了自己的注释@SdeSerializedName(“instance.id”)并添加了一个新策略。添加到问题以供重用。 – Fakrudeen 2011-05-12 06:26:13

-1

由于点:

这是serializedname一个错误,这是修复我做了 “”已经是javascript中的对象和成员名称之间的分隔符(这是json的起源),它不能是有效的字段名称。

+0

推理是有道理的。但是json规范。不这样说。 http://www.json.org/还有一些其他解析器实际上解析它。包括Gson的JSonParser! – Fakrudeen 2011-04-05 12:25:39