我正在尝试使用 jcouchdb (https://code.google.com/p/jcouchdb/) 从 Java 访问我的 CouchDB 实例。我有一些我想解析成 Java 类的 JSon 文档 - 使用 Svenson,在 jcouchdb 中使用,然后将这些解析的对象放入 DB。我使用 AVRO (http://avro.apache.org) JSon Encoder 生成这个 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/验证
但是我的 Svenson 对象定义如下:
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() {
}
(setter 和 getter 的身体被故意移除)
解析时的错误是:
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 库?