1

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ライブラリがありますか?

4

1 に答える 1

3

note を java.lang.String として宣言します。

public String getNote()

ただし、JSON では、 「string」という名前のプロパティを持つオブジェクトとして宣言します。

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

JSON または Bean を互いに一致するように変更する必要があります。たとえば、2 番目の機能する JSON では、JSON メモを文字列として宣言しました。これが機能する理由です。

于 2011-03-21T21:56:05.517 に答える