将xml转换为JSONObject有时,值的类型以ArrayList的形式获取,有时以Object的形式获取

时间:2019-04-17 21:08:07

标签: java json xml gson

将xml转换为JSONObject时,有时值的类型为ArrayList,有时为Object,因为我无法做到,因为我不知道xml何时会带有一个或多个“ registros”

public class Ccf {

        @SerializedName("num_registros")
        @Expose
        protected String numRegistros;
        @SerializedName("quantidade_total_cheques")
        @Expose
        protected String quantidadeTotalCheques;
        @SerializedName("registros")
        @Expose
        protected List<Registros> registros;

        //getter and setter

    }

    public class Registros {

        @SerializedName("agencia")
        @Expose
        protected String agencia;
        @SerializedName("banco")
        @Expose
        protected String banco;
        @SerializedName("motivo")
        @Expose
        protected String motivo;

         //getter and setter
    }

触发Web服务时xml可能返回

    String xml = "<num_registros>1</num_registros>" + 
            "     <quantidade_total_cheques>9</quantidade_total_cheques>" + 
            "     <registros>" + 
            "         <agencia>3747</agencia>" + 
            "         <banco>033 - BANCO SANTANDER (BRASIL) S.A.</banco>" + 
            "         <motivo>12 - MOTIVO 12</motivo>" + 
            "     </registros>";

    String xmlArray = "<num_registros>1</num_registros>" + 
            "          <quantidade_total_cheques>9</quantidade_total_cheques>" + 
            "          <registros>" + 
            "             <agencia>3747</agencia>" + 
            "             <banco>033 - BANCO SANTANDER (BRASIL) S.A.</banco>" + 
            "             <motivo>12 - MOTIVO 12</motivo>" + 
            "         </registros>" + 
            "         <registros>" + 
            "             <agencia>3747</agencia>" + 
            "             <banco>033 - BANCO SANTANDER (BRASIL) S.A.</banco>" + 
            "             <motivo>12 - MOTIVO 12</motivo>" + 
            "         </registros>";

    JSONObject json = XML.toJSONObject(xml);
    JSONObject jsonArrayRegistros = XML.toJSONObject(xmlArray);

    Gson gson = new Gson();

    //This works correctly
    Ccf ccf = gson.fromJson(jsonArrayRegistros, Ccf.class);

    //But this one I get the error: Expected BEGIN_ARRAY but was BEGIN_OBJECT
    Ccf ccf = gson.fromJson(json, Ccf.class);

0 个答案:

没有答案