2

我正在使用Retrofit 2调用 restful webservice 并使用LoganSqure JSON 解析器解析响应并使用Realm存储日期

由于领域不支持List数据类型,我需要为相同类型的响应创建两个不同的模型。

例如,

@JsonObject
public class Dealers {

    @JsonField
    private String status;
    @JsonField
    private String responseDateTime;
    @JsonField
    private String userName;
    @JsonField
    private String count;
    @JsonField
    private String error;
    @JsonField
    private List<DealerList> dealerList;


}

在上面的代码中我不能使用 RealmList<DealerList>,因此我正在创建单独的模型,Realm如下所示。

public class RDealers extends RealmObject{


    private String status;

    private String responseDateTime;

    private String userName;

    private String count;

    private String error;

     @JsonField( typeConverter = DealerListConverter.class)
    private RealmList<DealerList> dealerList;


}

之后,我需要将响应序列化为 Json String 并将其转换为领域。

    Dealers dealers = response.body();


      try {

            String jsonResponse =                       
LoganSquare.serialize(dealers.getdealerList());
    Realm realm =getDB();
    realm.beginTransaction();
    realm.createAllFromJson(RDealer.class, jsonResponse);
    realm.commitTransaction();

          } catch (IOException e) {
             e.printStackTrace();
          } catch (JSONException e) {
            e.printStackTrace();
          }

有什么击球手方法可以做到这一点吗?

类型转换器

public class DealerListConverter  implements TypeConverter<RealmList<DealerList>> {


    @Override
    public RealmList<DealerList> parse(JsonParser jsonParser) throws IOException {

        DealerList dealer = new DealerList();


        RealmList<DealerList> dealerLists = new RealmList<DealerList>() ;
        while(jsonParser.nextToken()  != JsonToken.END_OBJECT){

            String name = jsonParser.getCurrentName();

            if("dealerID".equals(name)){

                jsonParser.nextToken();
                Log.e(name, jsonParser.getText());
                dealer.setDealerID(jsonParser.getText());

            }else if ("dealerName".equals(name)){
                jsonParser.nextToken();

                dealer.setDealerName(jsonParser.getText());

                Log.e(name, jsonParser.getText() );
            }else if ("dealerAddress".equals(name)){
                jsonParser.nextToken();

                dealer.setDealerAddress(jsonParser.getText());
                Log.e(name, jsonParser.getText() );

            }else if ("dealerAddress2".equals(name)){
                jsonParser.nextToken();
                dealer.setDealerAddress2(jsonParser.getText());
                Log.e(name, jsonParser.getText() );
            }else if ("latitude".equals(name)) {
                jsonParser.nextToken();
                dealer.setLatitude(jsonParser.getText());
                Log.e(name, jsonParser.getText() );
            }else if ("longitude".equals(name)){

                jsonParser.nextToken();
                dealer.setLongitude(jsonParser.getText());
                Log.e(name, jsonParser.getText() );
            }else if ("email".equals(name)){
                jsonParser.nextToken();

                dealer.setEmail(jsonParser.getText());
                Log.e(name, jsonParser.getText() );
            }else if ("city".equals(name)){
                jsonParser.nextToken();

                dealer.setCity(jsonParser.getText());
                Log.e(name, jsonParser.getText() );
            }else if ("statecode".equals(name)){
                jsonParser.nextToken();
                Log.e(name, jsonParser.getText());
                dealer.setStatecode(jsonParser.getText());

            }else if ("postcode".equals(name)){
                jsonParser.nextToken();
                Log.e(name, jsonParser.getText());
                dealer.setPostcode(jsonParser.getText());
            }

        }

        dealerLists.add(dealer);

        return dealerLists;
    }

    @Override
    public void serialize(RealmList<DealerList> object, String fieldName, boolean writeFieldNameForObject, JsonGenerator jsonGenerator) throws IOException {

        Log.e("Converter" , "serialize");
    }
}

onResponse我尝试了上面的代码,但在改造功能方面我没有得到任何响应

 if (response.isSuccess()) {


        Dealers dealers = response.body();
        // following log is not getting printed
         Log.e("Data" , dealers.getDealerList().size()+" *********");

      }
4

0 回答 0