【问题标题】:How to get java objects from JSONArray url using Jackson in Android如何在Android中使用Jackson从JSONArray url获取java对象
【发布时间】:2015-01-11 07:04:15
【问题描述】:

这是我来自 URL 的 JSON https://api.myjson.com/bins/142jr

[
  {
    "serviceNo":"SR0000000001",
    "serDate":"17",
    "serMonth":"DEC",
    "serYear":"2015",
    "serTime":"02.30 AM",
    "serApartmentName":"Galaxy Apartments"
  },
  {
    "serviceNo":"SR0000000002",
    "serDate":"19",
    "serMonth":"JUN",
    "serYear":"2016",
    "serTime":"03.30 AM",
    "serApartmentName":"The Great Apartments"
  }
]

我有一个 ListView,我想从在线 JSON 中填充详细信息,上面我给出了一个链接和示例 json,任何人在 java 中给出了示例杰克逊代码

感谢您的提前, 拉杰什·拉金迪兰

【问题讨论】:

    标签: java android json android-listview jackson


    【解决方案1】:

    要使用jackson,你需要创建一个模型类:

    [
      {
        "serviceNo":"SR0000000001",
        "serDate":"17",
        "serMonth":"DEC",
        "serYear":"2015",
        "serTime":"02.30 AM",
        "serApartmentName":"Galaxy Apartments"
      },
      {
        "serviceNo":"SR0000000002",
        "serDate":"19",
        "serMonth":"JUN",
        "serYear":"2016",
        "serTime":"03.30 AM",
        "serApartmentName":"The Great Apartments"
      }
    ]
    

    对于上述 json,模型类将是:

    public class SomeClass {
     private String serviceNo;
     private String serDate;
     private String serMonth;
     private String serYear;
     private String serTime;
     private String serApartmentName;
    
     @JsonProperty("serviceNo") //to bind it to serviceNo attribute of the json string
     public String getServiceNo() {
      return serviceNo;
     }
    
     public void setServiceNo(String sNo) { //@JsonProperty need not be specified again
      serviceNo = sNo;
     }
    
     //create getter setters like above for all the properties.
     //if you want to avoid a key-value from getting parsed use @JsonIgnore annotation
    
    }
    

    现在,当您将上述 json 作为字符串存储在变量中时,比如 jsonString,请使用以下代码对其进行解析:

    ObjectMapper mapper = new ObjectMapper(); // create once, reuse
    ArrayList<SomeClass> results = mapper.readValue(jsonString,
       new TypeReference<ArrayList<ResultValue>>() { } );
    

    结果现在应该包含两个 SomeClass 对象,上面的 json 被解析为各自的对象。

    PS:我已经很久没有使用 Jackson 进行解析了,所以这段代码可能需要一些改进。

    【讨论】:

      【解决方案2】:

      如果您将此作为 http 响应,那么我建议您使用适用于 android 的 spring rest 模板。 它支持消息转换器。这样就承担了编组和解组的责任。

      [更新] 这是一个相同的博客:http://www.journaldev.com/2552/spring-restful-web-service-example-with-json-jackson-and-client-program

      更多详情请参考文档:

      http://docs.spring.io/spring-android/docs/current/reference/html/rest-template.html

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-01
      • 2018-05-11
      • 1970-01-01
      • 2016-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-19
      相关资源
      最近更新 更多