jcouchdb: svenson не может разобрать строку json - PullRequest
1 голос
/ 21 марта 2011

Я пытаюсь использовать jcouchdb (https://code.google.com/p/jcouchdb/) для доступа к моему экземпляру CouchDB из Java. У меня есть несколько документов JSon, которые я хотел бы проанализировать в классах Java - с помощью Svenson, использованных в jcouchdb, а затем поместить эти проанализированныеобъекты в БД. Я генерирую эти объекты JSON с помощью AVRO (http://avro.apache.org) JSon Encoder, они вроде бы в порядке, но, видимо, другие парсеры имеют проблемы с ними.

Мои строки JSon выглядят так:

{
   "id":40,
   "event_id":"48764322212",
   "note":{
      "string":"ABC note"
   },
   "created_date":null,
   "event_category":null,
   "city":null,
   "address":null
}

Что кажется действительным JSON - проверено с помощью http://jsonformatter.curiousconcept.com/

Однако мой объект Свенсона определен так:

public class Note {

    Long id;
    String eventId;
    String note;
    String createdDate;
    String eventCategory;
    String city;
    String address;

    @JSONProperty()
    public Long getId() {

    @JSONProperty("event_id")
    public String getEventId() {

    @JSONProperty("note")
    public String getNote() {

    @JSONProperty("created_date")
    public String getCreatedDate() {

    @JSONProperty("event_category")
    public String getEventCategory() {

    @JSONProperty("city")
    public String getCity() {

    @JSONProperty("address")
    public String getAddress() {

}

(тела установщиков и получателей преднамеренно удалены)

Ошибка при разборе:

Cannot set property string on class java.lang.String

Кажется, что этот JSON анализируется правильно (есть разница в note поле):

{
   "id":40,
   "event_case_id":"000-123123123",
   "event_msisdn":"48764322212",
   "note":"Planowana data portacji: 2011/01/27 11:42:49",
   "created_date":null,
   "event_category":null,
   "city":null,
   "address":null
}

Как я могу решить это? Может быть, есть другая библиотека json, которая подойдет мне?

1 Ответ

3 голосов
/ 22 марта 2011

Вы объявляете примечание как java.lang.String:

public String getNote()

, но в JSON вы объявляете его как объект со свойством с именем"string":

"note":{
  "string":"ABC note"
}

Вам нужно изменить JSON или Бин, чтобы они соответствовали друг другу.Например, во втором функционирующем JSON вы объявили примечание JSON в виде строки.Вот почему это работает.

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