2017-11-08 1 views
3

Unbekannter Schlüssel beim Konvertieren des Realmmodells in Json-Objekt mit Hilfe der Jackson-Bibliothek.Reichsmodell mit Jackson analysieren

Hier ist meine Realm Model Instanz.

public class RecordData extends RealmObject { 

    public RecordData() { 

    } 

    private FormData formData; 

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

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

-Code für Reich-Modell JSON-Objekt konvertieren.

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

Ausgabe von Parse-json:

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

Realm Version: io.realm:realm-gradle-plugin:4.1.1

Rxjava Version: 'io.reactivex.rxjava2:rxjava:2.1.6'

Jackson Version: com.fasterxml.jackson.core:jackson-databind:2.8.6

Warum ich geladen bin immer gelungen, und v alid boolesche Werte?

+0

Können Sie Code von 'getRecordData()'? – adnanyousafch

+0

Methode getRecordData() gibt nur RecordData Realm Model Instanz zurück –

+0

Machst du keine 'Realm.where(). FindAll()' Abfrage? Ich muss diesen Code sehen, um zu überprüfen, ob Sie auf ein ähnliches Problem stoßen, das ich gelöst habe. – adnanyousafch

Antwort

0

Write-Antwort von ObjectMapper, Sie haben, dies zu tun:

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 : ""; 
    } 

und Ihre Antwort in JsonObject erhalten:

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

Glücklich Codierung !!

+0

Ich habe das gleiche oben verwendet, aber Problem ist da. –

0

Ich habe es mit Gson Parsing-Bibliothek gelöst.

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

Es ist nicht zurück unbekannten Schlüssel. Die Ausgabe ist hier.

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

Ich hoffe, Sie werden diese Lösung finden, wenn Sie mit dem gleichen Fall konfrontiert sind.

0

könnten Sie @JsonIgnoreProperties Anmerkung verwenden:

@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; 
} 

Eine weitere Option ist @RealmClass public class RecordData implements RealmModel zu verwenden.

+0

Verwenden von JsonIgnoreProperties wäre Batter-Option. Aber @RealmClass Annotation ist bereits in meiner Klasse hinzugefügt. –

+0

Der Punkt ist die 'implementiert RealmModel' statt' erweitert RealmObject', aber ich denke, die Ignorieren Eigenschaften ist einfacher – EpicPandaForce

Verwandte Themen