JavaからCouchDBインスタンスにアクセスするためにjcouchdb(https://code.google.com/p/jcouchdb/)を使用しようとしています。Javaクラスに解析したいJSonドキュメントがいくつかあります。Svensonを使用してjcouchdbで使用し、解析したオブジェクトをDBに配置します。この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/で検証されています
ただし、私の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() {
}
(セッターとゲッターの体は意図的に削除されました)
解析時のエラーは次のとおりです。
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ライブラリがありますか?