2017-11-08 3 views
3

領域モデルをjacksonライブラリを使用してjsonオブジェクトに変換する際に不明なキーを取得しています。jacksonを使用して領域モデルを解析する

私のレルムモデルインスタンスです。

public class RecordData extends RealmObject { 

    public RecordData() { 

    } 

    private FormData formData; 

    @Nullable 
    @JsonProperty("values") 
    private RealmList<Values> values; 

    @Nullable 
    @JsonProperty("value") 
    private String value; 
} 

realmモデルをjsonオブジェクトに変換するためのコード。解析JSONから

JSONObject recordDataJsonObject = new JSONObject(new ObjectMapper().writeValueAsString(formData.getRecordData())); 

出力:

{"loaded":true,"managed":false,"valid":true,"value":"fdfdf","values":[]} 

レルムバージョン:io.realm:realm-gradle-plugin:4.1.1

Rxjavaバージョン:'io.reactivex.rxjava2:rxjava:2.1.6'

ジャクソンバージョン:com.fasterxml.jackson.core:jackson-databind:2.8.6

私は、ロードされた管理取得していますなぜそしてv alidブール値?

public static String getJsonFromObject() { 
     ObjectMapper objectMapper = ObjectMapperHelper.getObjectMapperInstance(); 
     String jsonString = null; 
      try { 
      jsonString = objectMapper.writeValueAsString(formData.getRecordData()); 
     } catch (JsonProcessingException e) { 
      e.printStackTrace(); 
     } 
     return jsonString != null ? jsonString : ""; 
    } 

をしてJsonObjectであなたの応答を取得:ObjectMapperから

+0

'getRecordData()'のコードを投稿できますか? – adnanyousafch

+0

getRecordData()メソッドは、RecordDataレルムモデルインスタンス –

+0

のみを返します。 'Realm.where()。findAll()'クエリは作成していませんか?あなたが私が解決したのと同様の問題に遭遇しているかどうかを確認するために、そのコードを確認する必要があります。 – adnanyousafch

答えて

0

書き込み応答、あなたはこれをしなければならない

try { 
    JSONObject jsonObject = new JSONObject().getJSONObject(getJsonFromObject()); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
     } 

ハッピーコーディングを!

+0

私は上記を使用しましたが、問題はあります。 –

0

私はGson解析ライブラリを使用して解決しました。

JSONObject recordDataJsonObject = new JSONObject(new Gson().toJson(formData.getRecordData())); 

その未知のキーを返します。出力はこちらです。

{"value":"fdfdf","values":[]} 

あなたは同じケースに直面している場合は、このソリューションを見つけることを望みます。

@JsonIgnoreProperties({"loaded", "managed", "valid"}) 
public class RecordData extends RealmObject { 

    public RecordData() { 

    } 

    private FormData formData; 

    @Nullable 
    @JsonProperty("values") 
    private RealmList<Values> values; 

    @Nullable 
    @JsonProperty("value") 
    private String value; 
} 

別のオプションは、@RealmClass public class RecordData implements RealmModelを使用することです:

0

あなたは@JsonIgnoreProperties、アノテーションを使用することができます。

+0

JsonIgnorePropertiesを使用するとバッターオプションになります。しかし、@RealmClassアノテーションは既に自分のクラスに追加されています。 –

+0

ポイントは 'extends RealmObject'の代わりに' imultriction RealmModel'ですが、無視プロパティは簡単だと思います – EpicPandaForce

関連する問題