【问题标题】:Embedding a json array within json object在 json 对象中嵌入 json 数组
【发布时间】:2016-12-08 12:13:20
【问题描述】:

我使用以下代码在 json 对象中放置一个 json 数组;

import org.json.JSONObject;

public class PollingPoJo {

    int id;
    String topic;
    String description;
    String pollItem1;
    String pollItem2;
    String pollItem3;
    String pollItem4;
    ArrayList<String> pollingItem ;
    public PollingPoJo(int id, String topic, String description, String pollItem1, String pollItem2, String pollItem3,
            String pollItem4) {
        super();
        this.id = id;
        this.topic = topic;
        this.description = description;
        this.pollItem1 = pollItem1;
        this.pollItem2 = pollItem2;
        this.pollItem3 = pollItem3;
        this.pollItem4 = pollItem4;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getTopic() {
        return topic;
    }
    public void setTopic(String topic) {
        this.topic = topic;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public String getPollItem1() {
        return pollItem1;
    }
    public void setPollItem1(String pollItem1) {
        this.pollItem1 = pollItem1;
    }
    public String getPollItem2() {
        return pollItem2;
    }
    public void setPollItem2(String pollItem2) {
        this.pollItem2 = pollItem2;
    }
    public String getPollItem3() {
        return pollItem3;
    }
    public void setPollItem3(String pollItem3) {
        this.pollItem3 = pollItem3;
    }
    public String getPollItem4() {
        return pollItem4;
    }
    public void setPollItem4(String pollItem4) {
        this.pollItem4 = pollItem4;
    }

    @Override
    public String toString() {
        pollingItem = new ArrayList<>();
        pollingItem.add(pollItem1);
        pollingItem.add(pollItem2);
        pollingItem.add(pollItem3);
        pollingItem.add(pollItem4);

        String jObj = new JSONObject().put("id",id)
                .put("topic", topic)
                .put("description", description)
                .put("pollingItems", pollItem1).toString();

        return jObj;
    }

}

稍后我使用以下代码生成响应。

@POST
    @Path("polling")
    @Produces(MediaType.APPLICATION_JSON)
    public static String getCurrentPoll() {
        ArrayList<PollingPoJo> output = new ArrayList<PollingPoJo>();
        try {
            Connection connection = MyResource.getConnection();
            Statement stmt = connection.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM POLLING order by id desc limit 1 ");
            output = new ArrayList<PollingPoJo>();
            while (rs.next()) {
                PollingPoJo trending = new PollingPoJo(rs.getInt("ID"), rs.getString("TOPIC"), rs.getString("DESCRIPTION"),
                        rs.getString("ITEM1"), rs.getString("ITEM2"), rs.getString("ITEM3"),
                        rs.getString("ITEM4"));
                output.add(trending);
            }

        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return output.toString();
    }

但生成的 json 响应中不包含 json。虽然我在 toString 中嵌入了一个数组列表,但它没有显示出来。我怎样才能解决这个问题?

以下是预期的样本响应,

{ “主题”:“水果”,“描述”: "我最喜欢的水果", "id": 1,
“轮询项目”:[ “第 1 项”, “第 2 项”, “项目 3”] }

但它会抛出以下响应,

[{ “主题”:“水果”, "description": "我最喜欢的水果", “身份证”:1, "pollingItems": "item1" } ]

如您所见,pollingitems 不包含 json 数组。我怎样才能解决这个问题?

【问题讨论】:

  • 好吧,您的toString() 覆盖包含以下行:.put("pollingItems", pollItem1) 其中pollItem1 是一个字符串。你认为会发生什么?

标签: java json jersey


【解决方案1】:

在您的 PollingPoJo 中,您应该有一个名为 polling_items 的集合。并在 PollingPoJo 的构造函数中,将 3,4,5,6 参数添加到这个集合中。

【讨论】:

    猜你喜欢
    • 2019-08-11
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    相关资源
    最近更新 更多