2011-04-05 49 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