我試圖使用jcouchdb(https://code.google.com/p/jcouchdb/)從Java訪問我的CouchDB實例。我有一些JSon文檔需要解析到Java類中 - 使用jcouchdb中的Svenson,然後將這些解析的對象放入數據庫中。我用AVRO(http://avro.apache.org)JSon Encoder生成這個JSON對象,它們似乎沒問題,但顯然其他解析器有問題。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() {
}
(getter和setter方法'身體故意刪除)
錯誤解析時是:
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字符串可以工作?我無法修改Avro生成的json。 – 2011-03-22 08:01:10
我現在無法測試它,但我認爲您應該使用[type selection](http://code.google.com/p/svenson/wiki/TypeSelection)將帶有「string」屬性的對象映射到String 。 – 2011-03-22 08:34:21
好吧,添加一個簡單的:parser.addTypeHint(「。string」,String.class)沒有幫助 - 我應該使用不同的匹配語法嗎? – 2011-03-22 10:26:16