我使用Jersey与Jackson处理JSON。此刻,我正试图扭曲我的查询结果作为JSONArray。我想要得到以下格式:
{
"map_data":
[
{"route": 2, "latitude": 89.667781, "longitude": 13.517741},
{"route": 7, "latitude": 89.657772, "longitude": 13.537742},
{"route": 9, "latitude": 89.647763, "longitude": 13.547754},
{"route": 12, "latitude":89.637754, "longitude": 13.567765}
]
}
如何格式化?
数据库类中的代码:
if (busExist.next()) {
for (int value : selected) {
PreparedStatement preparedMap = con
.prepareStatement("SELECT route, latitude, longitude from bus where route= ?");
preparedMap.setInt(1, value);
ResultSet rsMap = preparedMap.executeQuery();
while (rsMap.next()) {
int route = rsMap.getInt("route");
double lat = rsMap.getDouble("latitude");
double lon = rsMap.getDouble("longitude");
}
}
}
编辑: if (busExist.next()) {
List<MapData> LRLHistory = new ArrayList<>();
for (int value : selected) {
PreparedStatement preparedMap = con
.prepareStatement("SELECT route, latitude, longitude from bus where route= ?");
preparedMap.setInt(1, value);
ResultSet rsMap = preparedMap.executeQuery();
while (rsMap.next()) {
int route = rsMap.getInt("route");
double lat = rsMap.getDouble("latitude");
double lon = rsMap.getDouble("longitude");
MapData da_ma = new MapData(route, lat, lon);
LRLHistory.add(da_ma);
}
}
//System.out.println("The output of LRLHistory : "+LRLHistory);
}
**Edit 2: **
Database db = new Database();
List<MapData> lrl = db.get_map_data(selected);
try {
ObjectWriter ow = new ObjectMapper().writer()
.withDefaultPrettyPrinter();
String json = ow.writeValueAsString(lrl);
System.out.println("The output of json: " + json);
}
关于添加map_data字段,您可以在将其序列化为json String之前添加一个容器Java对象:
public static class MapDataHolder {
List<MapData> mapDataList;
public MapDataHolder(List<MapData> mapData) {
this.mapDataList = mapData;
}
@JsonProperty("map_data")
public List<TestStuff.MapData> getMapData() {
return mapDataList;
}
}
.
MapDataHolder mapDataHolder = new MapDataHolder(lrl);
String json = ow.writeValueAsString(mapDataHolder);
.
The output of json: {
"map_data" : [ {
"route" : 1,
"lat" : 1.1,
"lon" : 1.2
}, {
"route" : 2,
"lat" : 2.1,
"lon" : 2.2
} ]
}
当然,您可能需要相应地重命名(例如MapDataHolder -> MapData, MapData -> MapDataEntry)。