【问题标题】:How to deal with JSON response with same key "Value" its String and Array with Retrofit如何处理具有相同键“值”的 JSON 响应,其字符串和数组与改造
【发布时间】:2017-01-24 12:37:57
【问题描述】:

在 JSON 响应中有键“值”,但它的响应有多种形式,如字符串和数组,具有相同的键“值”。

那么如何让Retrofit模型类维护具有相同键“Value”的String和Array。

    {
    "RespCode":"SUCCESS",
    "RespText":"Transaction Details",
       "Data":{
              "Record":[
               {
                  "group_title":"Seller Information",
                  "group_values":[
                   {
                        "key":"Listing Agent",
                        "value":[
                            {
                               "key":"Agent First Name",
                               "value":"Myks"
                            },
                            {
                                "key":"Agent Last Name",
                                "value":"Joe"
                            },
                            {
                                "key":"Company",
                                "value":"bdfjdlfdf"
                            },
                            {
                                "key":"Phone",
                                "value":"712.336.4967"
                            },
                            {
                                "key":"Email",
                                "value":"abc@gmail.com"
                            }
                        ]
                    },
                    {
                        "key":"Cell Phone",
                        "value":"012.345.6789"
                    },
                    {
                        "key":"Email",
                        "value":"balt@gmail.com.com"
                    },
                    {
                        "key":"Preferred Contact Method",
                        "value":"Phone"
                    }
                ]
            },
   ]
  }
}

【问题讨论】:

    标签: java android json performance retrofit2


    【解决方案1】:

    也许只使用一个包含多个哈希图的数组列表?或者...您必须定义一个 pojo,其中包含类型为 map 的数组列表或类似的东西

    【讨论】:

      【解决方案2】:

      检查一下:

      public  class ModelBean {
      
          private String RespCode;
          private String RespText;
          private DataBean Data;
      
          public String getRespCode() {
              return RespCode;
          }
      
          public void setRespCode(String RespCode) {
              this.RespCode = RespCode;
          }
      
          public String getRespText() {
              return RespText;
          }
      
          public void setRespText(String RespText) {
              this.RespText = RespText;
          }
      
          public DataBean getData() {
              return Data;
          }
      
          public void setData(DataBean Data) {
              this.Data = Data;
          }
      
          public static class DataBean {
              private List<RecordBean> Record;
      
              public List<RecordBean> getRecord() {
                  return Record;
              }
      
              public void setRecord(List<RecordBean> Record) {
                  this.Record = Record;
              }
      
              public static class RecordBean {
                  private String group_title;
                  private List<GroupValuesBean> group_values;
      
                  public String getGroup_title() {
                      return group_title;
                  }
      
                  public void setGroup_title(String group_title) {
                      this.group_title = group_title;
                  }
      
                  public List<GroupValuesBean> getGroup_values() {
                      return group_values;
                  }
      
                  public void setGroup_values(List<GroupValuesBean> group_values) {
                      this.group_values = group_values;
                  }
      
                  public static class GroupValuesBean {
                      private String key;
                      private List<ValueBean> value;
      
                      public String getKey() {
                          return key;
                      }
      
                      public void setKey(String key) {
                          this.key = key;
                      }
      
                      public List<ValueBean> getValue() {
                          return value;
                      }
      
                      public void setValue(List<ValueBean> value) {
                          this.value = value;
                      }
      
                      public static class ValueBean {
                          private String key;
                          private String value;
      
                          public String getKey() {
                              return key;
                          }
      
                          public void setKey(String key) {
                              this.key = key;
                          }
      
                          public String getValue() {
                              return value;
                          }
      
                          public void setValue(String value) {
                              this.value = value;
                          }
                      }
                  }
              }
          }
      }
      

      【讨论】:

      • 我尝试了您的解决方案,但向我抛出了同样的错误。应为 BEGIN_ARRAY,但在第 1 行第 439 列路径 $.Data.Record[1].group_values[0].value
      • 因此基本上响应具有与字符串和数组相同的键“值”。这就是它抛出此错误的原因。所以请帮我解决这个问题。
      猜你喜欢
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-10
      • 1970-01-01
      • 2020-09-15
      • 1970-01-01
      相关资源
      最近更新 更多