【发布时间】: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是一个字符串。你认为会发生什么?