Java 如何使用Spring引导Rest控制器返回JSONArray?
我有一个返回JSONArray的方法。 现在我想用我的Spring Boot Rest控制器返回JSONArray,但它只在我的浏览器中重新运行“{“empty”:false}” 我希望你能理解我的问题 谢谢你的帮助 来自德国的问候:D 尼古拉斯 我试图返回一个列表,但结果是一样的 我的RestControllerJava 如何使用Spring引导Rest控制器返回JSONArray?,java,spring,rest,spring-boot,Java,Spring,Rest,Spring Boot,我有一个返回JSONArray的方法。 现在我想用我的Spring Boot Rest控制器返回JSONArray,但它只在我的浏览器中重新运行“{“empty”:false}” 我希望你能理解我的问题 谢谢你的帮助 来自德国的问候:D 尼古拉斯 我试图返回一个列表,但结果是一样的 我的RestController package eliteDangerousRestService.restController; import java.util.List; import org.json.
package eliteDangerousRestService.restController;
import java.util.List;
import org.json.JSONObject;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import eliteDangerousRestService.restApplications.commodity.GetStationWithSpecificCommodity;
@RestController
public class Controller
{
@RequestMapping( value = "/elite-dangerous/commodity", method = RequestMethod.GET )
@ResponseBody
public List<JSONObject> getCommodity
(
@RequestParam( value = "currentSystem", defaultValue = "Sol" ) String currentSystenName,
@RequestParam( value = "radius", defaultValue = "30" ) Integer radius,
@RequestParam( value = "inklSystemsWithPermission", required = false, defaultValue = "false" ) Boolean inkSystemsWithPermission,
@RequestParam( value = "inkPlanetrayStations", required = false, defaultValue = "false" ) Boolean inkPlanetrayStations,
@RequestParam( value = "commodityName", required = false, defaultValue = "$Gold_Name" ) String commodityName,
@RequestParam( value = "count", required = false, defaultValue = "10" ) Integer count,
@RequestParam( value = "multi", required = false, defaultValue = "2" ) Double multiplayer,
@RequestParam( value = "maxAge", required = false, defaultValue = "15" ) Integer maxAge
)
{
System.out.println( currentSystenName );
System.out.println( radius );
System.out.println( inkSystemsWithPermission );
System.out.println( inkPlanetrayStations );
System.out.println( commodityName );
System.out.println( count );
System.out.println( multiplayer );
System.out.println( maxAge );
GetStationWithSpecificCommodity getStationWithSpecificCommodity = new GetStationWithSpecificCommodity();
List<JSONObject> list = getStationWithSpecificCommodity.getAllData( currentSystenName, radius,
inkSystemsWithPermission, inkPlanetrayStations, commodityName, count, multiplayer, maxAge );
System.out.println( list.toString() );
return list;
}
}
考虑到您正试图返回一个RESTful响应,我建议返回一个ResponseEntity,并在响应主体中列出列表
@RequestMapping( value = "/elite-dangerous/commodity", method = RequestMethod.GET )
@ResponseBody
public ResponseEntity<?> getCommodity
(
@RequestParam( value = "currentSystem", defaultValue = "Sol" ) String currentSystenName,
@RequestParam( value = "radius", defaultValue = "30" ) Integer radius,
@RequestParam( value = "inklSystemsWithPermission", required = false, defaultValue = "false" ) Boolean inkSystemsWithPermission,
@RequestParam( value = "inkPlanetrayStations", required = false, defaultValue = "false" ) Boolean inkPlanetrayStations,
@RequestParam( value = "commodityName", required = false, defaultValue = "$Gold_Name" ) String commodityName,
@RequestParam( value = "count", required = false, defaultValue = "10" ) Integer count,
@RequestParam( value = "multi", required = false, defaultValue = "2" ) Double multiplayer,
@RequestParam( value = "maxAge", required = false, defaultValue = "15" ) Integer maxAge
)
{
System.out.println( currentSystenName );
System.out.println( radius );
System.out.println( inkSystemsWithPermission );
System.out.println( inkPlanetrayStations );
System.out.println( commodityName );
System.out.println( count );
System.out.println( multiplayer );
System.out.println( maxAge );
GetStationWithSpecificCommodity getStationWithSpecificCommodity = new GetStationWithSpecificCommodity();
List<JSONObject> list = getStationWithSpecificCommodity.getAllData( currentSystenName, radius,
inkSystemsWithPermission, inkPlanetrayStations, commodityName, count, multiplayer, maxAge );
System.out.println( list.toString() );
return ResponseEntity.ok(list);
}
@RequestMapping(value=“/elite-hazard/commodity”,method=RequestMethod.GET)
@应答器
公共责任
(
@RequestParam(value=“currentSystem”,defaultValue=“Sol”)字符串currentSystenName,
@RequestParam(value=“radius”,defaultValue=“30”)整数半径,
@RequestParam(value=“inklSystemsWithPermission”,required=false,defaultValue=“false”)布尔inkSystemsWithPermission,
@RequestParam(value=“inkPlanetrayStations”,required=false,defaultValue=“false”)布尔inkPlanetrayStations,
@RequestParam(value=“commodityName”,required=false,defaultValue=“$Gold\u Name”)字符串commodityName,
@RequestParam(value=“count”,required=false,defaultValue=“10”)整数计数,
@RequestParam(value=“multi”,required=false,defaultValue=“2”)双多人游戏,
@RequestParam(value=“maxAge”,required=false,defaultValue=“15”)整数maxAge
)
{
System.out.println(当前系统名称);
系统输出打印LN(半径);
System.out.println(inkSystemsWithPermission);
System.out.println(inkPlanetrayStations);
System.out.println(commodityName);
系统输出打印项次(计数);
System.out.println(多人游戏);
系统输出打印项次(最大值);
GetStationWithSpecificCommodity GetStationWithSpecificCommodity=新建GetStationWithSpecificCommodity();
List List=getStationWithSpecificCommodity.getAllData(当前系统名称、半径、,
inkSystemsWithPermission、inkPlanetrayStations、commodityName、count、multiplayer、maxAge);
System.out.println(list.toString());
返回ResponseEntity.ok(列表);
}
编辑:
我建议采用模型模式,并在处理api数据时使用Jackson作为POJO到JSON的序列化/反序列化器。现在,您正在尝试自己构造JSON响应。我不认为你所做的是错的,我只是认为这会使事情复杂化,而且对你来说,这会增加开销。如果您创建了一个响应模型,那么您的列表将是List,然后您的响应库将包含该列表
现在,您的列表似乎包含空/空数据。我会继续四处寻找,看看是否能找到一个与您的实现相关的答案。嗨,布兰登,谢谢您的回答。现在我的回答是这样的:[{“empty”:false},{“empty”:false},{“empty”:false},{“empty”:false},{“empty”:false},{“empty”:false},{“empty”:false},{“empty”:false},{“empty”:false},{“empty”:false},{“empty”:false},{“empty”:false},{“empty”:false},{“empty”:false},]谢谢你帮助我。尼古拉斯
[
{
"Stations": [
{
"Demand": 0,
"StationName": "Daedalus",
"LandingPadSize": "L",
"MarketUpdatedAt": 1550116514,
"DistanceToStar": 196,
"Planetary": false,
"Supply": 68929,
"SellPrice": 8887,
"SystemName": "Sol",
"BuyPrice": 9079
},
{
"Demand": 0,
"StationName": "Burnell Station",
"LandingPadSize": "M",
"MarketUpdatedAt": 1550116815,
"DistanceToStar": 359,
"Planetary": false,
"Supply": 445,
"SellPrice": 9344,
"SystemName": "Sol",
"BuyPrice": 9545
},
{
"Demand": 0,
"StationName": "Galileo",
"LandingPadSize": "L",
"MarketUpdatedAt": 1550087622,
"DistanceToStar": 502,
"Planetary": false,
"Supply": 46218,
"SellPrice": 9057,
"SystemName": "Sol",
"BuyPrice": 9252
},
{
"Demand": 0,
"StationName": "Columbus",
"LandingPadSize": "L",
"MarketUpdatedAt": 1550099829,
"DistanceToStar": 2493,
"Planetary": false,
"Supply": 295,
"SellPrice": 9831,
"SystemName": "Sol",
"BuyPrice": 10044
},
{
"Demand": 0,
"StationName": "Titan City",
"LandingPadSize": "L",
"MarketUpdatedAt": 1550095558,
"DistanceToStar": 5040,
"Planetary": false,
"Supply": 191,
"SellPrice": 9680,
"SystemName": "Sol",
"BuyPrice": 9890
}
],
"General": {
"CommodityID": 42,
"SystemName": "Sol",
"NeedsPermit": true,
"Distance": 0
}
},
{
"Stations": [
{
"Demand": 0,
"StationName": "al-Din Prospect",
"LandingPadSize": "M",
"MarketUpdatedAt": 1550116804,
"DistanceToStar": 5586,
"Planetary": false,
"Supply": 341,
"SellPrice": 9831,
"SystemName": "Alpha Centauri",
"BuyPrice": 9945
},
{
"Demand": 0,
"StationName": "Hutton Orbital",
"LandingPadSize": "M",
"MarketUpdatedAt": 1550115464,
"DistanceToStar": 6397048,
"Planetary": false,
"Supply": 24,
"SellPrice": 9831,
"SystemName": "Alpha Centauri",
"BuyPrice": 9945
}
],
"General": {
"CommodityID": 42,
"SystemName": "Alpha Centauri",
"NeedsPermit": false,
"Distance": 4.377120022057882
}
},
{
"Stations": [
{
"Demand": 0,
"StationName": "Levi-Strauss Installation",
"LandingPadSize": "M",
"MarketUpdatedAt": 1550069914,
"DistanceToStar": 6,
"Planetary": false,
"Supply": 1836,
"SellPrice": 9444,
"SystemName": "Barnard's Star",
"BuyPrice": 9557
},
{
"Demand": 0,
"StationName": "Miller Depot",
"LandingPadSize": "L",
"MarketUpdatedAt": 1550111992,
"DistanceToStar": 38,
"Planetary": false,
"Supply": 93,
"SellPrice": 9831,
"SystemName": "Barnard's Star",
"BuyPrice": 9946
},
{
"Demand": 0,
"StationName": "Boston Base",
"LandingPadSize": "L",
"MarketUpdatedAt": 1550116825,
"DistanceToStar": 62,
"Planetary": false,
"Supply": 48,
"SellPrice": 9831,
"SystemName": "Barnard's Star",
"BuyPrice": 9945
}
],
"General": {
"CommodityID": 42,
"SystemName": "Barnard's Star",
"NeedsPermit": false,
"Distance": 5.954662695107087
}
},
.
.
.
.
and so on.
@RequestMapping( value = "/elite-dangerous/commodity", method = RequestMethod.GET )
@ResponseBody
public ResponseEntity<?> getCommodity
(
@RequestParam( value = "currentSystem", defaultValue = "Sol" ) String currentSystenName,
@RequestParam( value = "radius", defaultValue = "30" ) Integer radius,
@RequestParam( value = "inklSystemsWithPermission", required = false, defaultValue = "false" ) Boolean inkSystemsWithPermission,
@RequestParam( value = "inkPlanetrayStations", required = false, defaultValue = "false" ) Boolean inkPlanetrayStations,
@RequestParam( value = "commodityName", required = false, defaultValue = "$Gold_Name" ) String commodityName,
@RequestParam( value = "count", required = false, defaultValue = "10" ) Integer count,
@RequestParam( value = "multi", required = false, defaultValue = "2" ) Double multiplayer,
@RequestParam( value = "maxAge", required = false, defaultValue = "15" ) Integer maxAge
)
{
System.out.println( currentSystenName );
System.out.println( radius );
System.out.println( inkSystemsWithPermission );
System.out.println( inkPlanetrayStations );
System.out.println( commodityName );
System.out.println( count );
System.out.println( multiplayer );
System.out.println( maxAge );
GetStationWithSpecificCommodity getStationWithSpecificCommodity = new GetStationWithSpecificCommodity();
List<JSONObject> list = getStationWithSpecificCommodity.getAllData( currentSystenName, radius,
inkSystemsWithPermission, inkPlanetrayStations, commodityName, count, multiplayer, maxAge );
System.out.println( list.toString() );
return ResponseEntity.ok(list);
}