我有Java Spring Boot应用程序。在控制台json中输入数据(但顺序错误?),当我将其转换为String时,我可以获取它,但无法返回JSONObject,POSTman显示{“ empty”:false}
我的控制器 包com.example.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.json.JSONException;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.example.dao.SeriaDao;
import com.example.model.Seria;
@RestController
public class WebController {
@Autowired
SeriaDao sed;
@GetMapping("/tabelka")
public List<Seria> showTable()
{
return sed.findAll();
}
@GetMapping("/pgTabelka")
public JSONObject pgTable(HttpServletRequest request)
{
int draw = 0;
int start = 0;
int length = 10;
JSONObject json = new JSONObject();
if(request.getParameter("draw")!=null)
draw = Integer.parseInt(request.getParameter("draw"));
if(request.getParameter("start")!=null)
start = Integer.parseInt(request.getParameter("start"));
if(request.getParameter("length")!=null)
length = Integer.parseInt(request.getParameter("length"));
int totalRecords = sed.recordsTotal();
List<Seria> serie = sed.findPart(start, length);
try {
json.put("draw", ++draw);
json.put("recordsTotal", totalRecords);
json.put("recordsFiltered", totalRecords);
json.put("data", serie);
} catch (JSONException e) {
e.printStackTrace();
}
System.out.println(json);
return json;
}
}
我必须添加什么,为什么我不能像我想要的那样获取json?
PS。控制台返回的json:
{
"recordsFiltered": 488,
"data": [
{
"feed": "Macroeconomic_And_Major_Markets",
"unit": "$ per Week",
"file": "SMU48185800500000011.csv",
"cassid": "1d2e556b-031e-4c6f-aec4-981c4e907324",
"name": "Average Weekly Earnings of All Employees: Total Private in Corpus Christi, TX (MSA)",
"createdate": "2016-10-15T23:38:49",
"changedate": "2017-01-09T00:50:01",
"id": 41,
"datefrom": "2006-12-31",
"categoryid": 3,
"frequency": 5
},
{
"feed": "Macroeconomic_And_Major_Markets",
"unit": "Index 2015=100",
"file": "CP0910CYM086NEST.csv",
"cassid": "6df5b8d5-ec39-4860-930f-a8b355cce37a",
"name": "Harmonized Index of Consumer Prices: Audio-Visual, Photographic, and Information Processing Equipment for Cyprus",
"createdate": "2016-10-15T23:38:49",
"changedate": "2017-02-16T11:35:04",
"id": 42,
"datefrom": "1995-12-31",
"categoryid": 3,
"frequency": 5
},
{
"feed": "Macroeconomic_And_Major_Markets",
"unit": "$ per Week",
"file": "SMU48185800500000011A.csv",
"cassid": "c3bad2a6-7ad5-4091-846b-f84e9b9f7b50",
"name": "Average Weekly Earnings of All Employees: Total Private in Corpus Christi, TX (MSA)",
"createdate": "2016-10-15T23:38:49",
"changedate": "2017-02-16T11:32:01",
"id": 43,
"datefrom": "2006-12-31",
"categoryid": 3,
"frequency": 8
},
{
"feed": "Macroeconomic_And_Major_Markets",
"unit": "Index 2015=100",
"file": "CP0910CZM086NEST.csv",
"cassid": "84483d95-d914-45ab-a87a-8c063bfc6d0f",
"name": "Harmonized Index of Consumer Prices: Audio-Visual, Photographic, and Information Processing Equipment for Czech Republic",
"createdate": "2016-10-15T23:38:49",
"changedate": "2017-02-16T11:35:04",
"id": 44,
"datefrom": "1999-11-30",
"categoryid": 3,
"frequency": 5
},
{
"feed": "Macroeconomic_And_Major_Markets",
"unit": "$ per Week",
"file": "SMU41187000500000011SA.csv",
"cassid": "285056e3-94ce-4266-98b4-ddf32602c0c2",
"name": "Average Weekly Earnings of All Employees: Total Private in Corvallis, OR (MSA)",
"createdate": "2016-10-15T23:38:49",
"changedate": "2017-01-09T00:50:01",
"id": 45,
"datefrom": "2006-12-31",
"categoryid": 3,
"frequency": 5
},
{
"feed": "Macroeconomic_And_Major_Markets",
"unit": "Index 2015=100",
"file": "CP0910DKM086NEST.csv",
"cassid": "9798eadf-1503-48a5-91e3-cad5852db745",
"name": "Harmonized Index of Consumer Prices: Audio-Visual, Photographic, and Information Processing Equipment for Denmark",
"createdate": "2016-10-15T23:38:49",
"changedate": "2017-02-16T11:35:04",
"id": 46,
"datefrom": "1995-12-31",
"categoryid": 3,
"frequency": 5
},
{
"feed": "Macroeconomic_And_Major_Markets",
"unit": "$ per Week",
"file": "SMU41187000500000011.csv",
"cassid": "d4b22376-2f84-404f-a175-c04ad8ced5a5",
"name": "Average Weekly Earnings of All Employees: Total Private in Corvallis, OR (MSA)",
"createdate": "2016-10-15T23:38:49",
"changedate": "2017-01-09T00:50:01",
"id": 47,
"datefrom": "2006-12-31",
"categoryid": 3,
"frequency": 5
},
{
"feed": "Macroeconomic_And_Major_Markets",
"unit": "Index 2015=100",
"file": "CP0910EEM086NEST.csv",
"cassid": "72880ba0-722e-46bb-98f4-7d388d217c26",
"name": "Harmonized Index of Consumer Prices: Audio-Visual, Photographic, and Information Processing Equipment for Estonia",
"createdate": "2016-10-15T23:38:49",
"changedate": "2017-02-16T11:35:04",
"id": 48,
"datefrom": "1995-12-31",
"categoryid": 3,
"frequency": 5
},
{
"feed": "Macroeconomic_And_Major_Markets",
"unit": "$ per Week",
"file": "SMU41187000500000011A.csv",
"cassid": "03fdf50e-9cd9-483b-aecf-1a0a9e93fa4d",
"name": "Average Weekly Earnings of All Employees: Total Private in Corvallis, OR (MSA)",
"createdate": "2016-10-15T23:38:49",
"changedate": "2017-02-16T11:32:01",
"id": 49,
"datefrom": "2006-12-31",
"categoryid": 3,
"frequency": 8
},
{
"feed": "Macroeconomic_And_Major_Markets",
"unit": "Index 2005=100",
"file": "CP0910EZ17M086NEST.csv",
"cassid": "2943c0f2-ad55-4ec4-98d0-70db25deaefc",
"name": "Harmonized Index of Consumer Prices: Audio-Visual, Photographic, and Information Processing Equipment for Euro area (17 countries) (DISCONTINUED)",
"createdate": "2016-10-15T23:38:49",
"changedate": "2017-02-16T11:35:04",
"id": 50,
"datefrom": "1995-12-31",
"categoryid": 3,
"frequency": 5
}
],
"draw": 1,
"recordsTotal": 488
}
答案 0 :(得分:2)
Spring Boot使用杰克逊作为默认序列化程序,并且您试图返回JSONObject本身。杰克逊不知道如何序列化它。
如果要返回动态json,则可以使用Map,如下所示:
@GetMapping("/pgTabelka")
public Map<String, Object> pgTable(HttpServletRequest request)
{
Map<String, Object> json = new HashMap();
int draw = 0;
int start = 0;
int length = 10;
if(request.getParameter("draw")!=null)
draw = Integer.parseInt(request.getParameter("draw"));
if(request.getParameter("start")!=null)
start = Integer.parseInt(request.getParameter("start"));
if(request.getParameter("length")!=null)
length = Integer.parseInt(request.getParameter("length"));
int totalRecords = sed.recordsTotal();
List<Seria> serie = sed.findPart(start, length);
json.put("draw", ++draw);
json.put("recordsTotal", totalRecords);
json.put("recordsFiltered", totalRecords);
json.put("data", serie);
return json;
}
或者您可以创建一个代表json结构的类,然后返回自定义数据类作为响应,spring将为您处理其余部分。
@GetMapping("/pgTabelka")
public YourJsonDataClass pgTable(HttpServletRequest request)
{
...
YourJsonDataClass json = new YourJsonDataClass();
json.setDraw(++draw);
json.setRecordsTotal(totalRecords);
json.setRecordsFiltered(totalRecords);
json.setData(serie);
return json;
}
答案 1 :(得分:1)
使用HashMap而不是JSONObject
minio:
image: minio/minio
entrypoint:
- minio
- server
-/data
ports:
- "9000:9000"
environment:
minio_access_key = username
minio_secret_key = password
mc:
image: minio/mc
environment:
minio_access_key = username
minio_secret_key = password
entrypoint:
/bin/sh -c
depends_on:
minio
如果有ResultSet,则可以通过rs循环这段代码。 值得注意的是,如果您的HashMap具有重复的键,则必须使用Multimap,因为HashMap不允许重复的键
List<HashMap<String, String>> myList = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map = new HashMap<>();
map.put(key, value);
myList.add(map);
答案 2 :(得分:0)
结合使用通用类型ResponseEntity<?>
和json.toString()
可以解决问题。
@ResponseBody
public ResponseEntity<?> create(@RequestBody User user) {
return ResponseEntity.status(HttpStatus.OK).body(json.toString());
}
答案 3 :(得分:0)
我收到此错误是因为我写了
JSONObject j1 = method()
JSONObject j2 = new JSONObject(j1)