Я пытаюсь использовать jcouchdb (https://code.google.com/p/jcouchdb/) для доступа к экземпляру CouchDB с Java. У меня есть некоторые JSon-документы, которые я бы хотел проанализировать на Java-классах - с помощью Svenson, используемой в jcouchdb, и затем поместить эти анализируемые объекты в DB. Я генерирую эти объекты JSON с помощью AVRO (http://avro.apache.org) JSon Encoder, похоже, они в порядке, но, видимо, у других парсеров есть проблемы с ними.jcouchdb: svenson не удалось разобрать строку json
Моих 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 разобран правильно (есть разница в примечание поле):
{
"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, которая будет работать для меня?
Хорошо, это кажется довольно очевидным + сообщение об ошибке. Не могли бы вы предложить, как я должен определить свой bean-компонент, чтобы приведенная выше строка JSON работала? Я не могу изменить созданный json Avro. –
Я не могу проверить это прямо сейчас, но я думаю, вы должны использовать [type selection] (http://code.google.com/p/svenson/wiki/TypeSelection), чтобы сопоставить объект со свойством «string» с строкой , –
Ну, добавление простого: parser.addTypeHint (". String", String.class) не помогло - следует ли использовать другой синтаксис соответствия? –