将数据加载到java中的下拉列表?

当我在控制台中打印时,我从 API 调用中获取数据时遇到了一些问题。我得到{id: 0000, label: TEST}作为我的结果。我需要做的是将要label显示在我的下拉列表中的值填充为用户可以从中进行选择的值。下面有我的代码的方法吗?谢谢您的帮助。


这是我的代码:


使用泽西图书馆:


  public List<JobSearchItem> getjobSearchList() {


    Client restClient = ClientBuilder.newClient();

    Response response = restClient.target("https://api.myjson.com/bins/7xq2x").request(MediaType.APPLICATION_JSON).get();

    return response.readEntity(new GenericType<List<JobSearchItem>>() {});



}

@Override

public String toString() {

    return new StringBuilder().append("[value=").append(value).append(", label=").append(label).append("]")

            .toString();

}


翻过高山走不出你
浏览 124回答 1
1回答

POPMUISE

正如我在评论中提到的,如果您使用一个库或框架来为您完成繁重的工作,这将非常容易。这是一个使用Jersey检索列表的非常简单的示例。import java.util.List;import javax.ws.rs.client.Client;import javax.ws.rs.client.ClientBuilder;import javax.ws.rs.core.GenericType;import javax.ws.rs.core.MediaType;import javax.ws.rs.core.Response;public class ListExtractor {    public static void main(String[] args) {        Client restClient = ClientBuilder.newClient();        Response response = restClient.target("https://api.myjson.com/bins/7xq2x").request(MediaType.APPLICATION_JSON).get();        List<Item> items = response.readEntity(new GenericType<List<Item>>() {});        items.forEach(System.out::println);    }    static class Item {        private String name;        private String abbreviation;        public String getName() {            return name;        }        public void setName(String name) {            this.name = name;        }        public String getAbbreviation() {            return abbreviation;        }        public void setAbbreviation(String abbreviation) {            this.abbreviation = abbreviation;        }        @Override        public String toString() {            return new StringBuilder().append("[name=").append(name).append(", abbreviation=").append(abbreviation).append("]")                    .toString();        }    }}更新我只是稍微修改了代码,以便它返回一个项目列表。警告:这不是生产就绪代码。我没有添加任何异常处理或日志记录,因此它保持简短并以清晰的方式传达其目的。您需要熟悉 JSON 序列化器/反序列化器,才能理解上面示例中的内容。解释如果您查看链接 ( https://api.myjson.com/bins/7xq2x ) 的响应,您会看到它返回一个 JSON 数组,其中数组的每个元素是: {"name":"Alberta","abbreviation":"AB"}。Jersey 提供的 JSON 反序列化器可以将此 JSON 对象转换(反序列化)为 Java 对象,如果您有一个类,该类具有两个名为nameand abbreviation(及其相应的 getter 和 setter)的字段。这行代码response.readEntity(new GenericType<List<Item>>() {});将开箱即用,因为我们为Item类提供了与上面 JSON 对象中的键一样命名的字段:class Item {        private String name;        private String abbreviation;        public String getName() {            return name;        }        public void setName(String name) {            this.name = name;        }        public String getAbbreviation() {            return abbreviation;        }        public void setAbbreviation(String abbreviation) {            this.abbreviation = abbreviation;        }        @Override        public String toString() {            return new StringBuilder().append("[name=").append(name).append(", abbreviation=").append(abbreviation).append("]")                    .toString();        }    }这是修改后的示例:import java.util.List;import javax.ws.rs.client.Client;import javax.ws.rs.client.ClientBuilder;import javax.ws.rs.core.GenericType;import javax.ws.rs.core.MediaType;import javax.ws.rs.core.Response;public class ListExtractor {    public static void main(String[] args) {        List<Item> items = getItems();        items.forEach(System.out::println);    }    static List<Item> getItems() {        Client restClient = ClientBuilder.newClient();        Response response = restClient.target("https://api.myjson.com/bins/7xq2x").request(MediaType.APPLICATION_JSON).get();        return response.readEntity(new GenericType<List<Item>>() {});       }    static class Item {        private String name;        private String abbreviation;        public String getName() {            return name;        }        public void setName(String name) {            this.name = name;        }        public String getAbbreviation() {            return abbreviation;        }        public void setAbbreviation(String abbreviation) {            this.abbreviation = abbreviation;        }        @Override        public String toString() {            return new StringBuilder().append("[name=").append(name).append(", abbreviation=").append(abbreviation).append("]")                    .toString();        }    }}泽西依赖项(Gradle):implementation 'org.glassfish.jersey.core:jersey-client:2.25.1'implementation 'org.glassfish.jersey.media:jersey-media-json-jackson:2.25.1'implementation 'org.glassfish.jersey.media:jersey-media-jaxb:2.25.1'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java