Является .символ разрешен в имени поля JSON? - PullRequest
1 голос
/ 05 апреля 2011

Есть. символ разрешен в имени поля 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;

Обновление:

Это ошибка в serializedname, и это исправление, которое я сделал:

   @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 голосов
/ 05 апреля 2011

Это разрешено в самом 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 голосов
/ 05 апреля 2011

С точки "." уже является разделителем между объектом и именем члена в javascript (именно здесь и происходит json), это не может быть допустимым именем поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...