2017-11-03 1 views
1

Die erwartete json Antwort vom Server sein soll:Haften Server-Antwort mit Moshi Umgang

{ 
    "teacher": { 
    "123": { 
     "_id": "389", 
     "name": "test_fast_teacher1" 
    } 
    } 
} 

Server json mit diesem Retour:

{ 
    "teacher": [ 

    ] 
} 

Wie auch immer diese gebrochene json Antwort zu handhaben? Bevor ich von Gson umschalte, wird das Lehrerobjekt immer noch deserialisiert, nur dass es null ist. Mit Moshi würde der Fehler geworfen werden und ich kann nicht mit dem anderen json fortfahren, der korrekt serialisiert ist.

Bitte beziehen Sie sich auf the link für die Antwort vom Autor.

Antwort

0

Wie wäre es mit so etwas?

Moshi moshi = new Moshi.Builder() 
    .add(DefaultOnDataMismatchAdapter.newFactory(Teacher.class, null)) 
    .build(); 

JsonAdapter<Teacher> adapter = moshi.adapter(Teacher.class); 

Teacher teacher = adapter.fromJson(json); 
// teacher == null 

wo DefaultOnDataMismatchAdapter ist Jesse's code you can copy into your code base.

Wenn der Lehrer-Typ in einem unerwarteten Format zurückkommt, die eine JsonDataException produzieren würden, wird es wieder zu Ihrem eingestellten Wert (in diesem Fall null) Standard.