因此,我从post方法接收到JSON,如下所示(填充字符串数组的JSON)。我在Java方法中以字符串形式收到它。我的目标是将其转换为JSONObject并对其进行迭代,例如:x.getString("0")
但是我有一个问题,当我尝试转换为JSONObject时,我正在使用import org.json.JSONObject
,它将返回一个空的JSONObject,如下所示:{}
为什么会这样呢?
谢谢
编辑:并且成功接收到该字符串,因为如果我返回,它将返回我发送的JSON。
{ '0': [ 'Mon Apr 08 2019 19:26:37 GMT+0000 (UTC)' ],
'1': [ '1234', '456', '1234', '456', '1234', '456', '545' ],
'2': [ '1234', '456', '1234', '456', '1234', '456', '545' ],
'3': [ '1234', '456', '1234', '456', '1234', '456', '545' ],
'4': [ '1234', '456', '1234', '456', '1234', '456', '545' ],
'5': [ 'Mon Apr 08 2019 19:30:00 GMT+0000 (UTC)' ] }
// My Java method that converts JSON received to JSONObject:
@POST
@Produces(MediaType.APPLICATION_JSON)
@Path("/{nifCliente}") // irrelevant this part, ignore it, important is the String
public JSONObject inserir (@PathParam("nifCliente")int c, String d) {
JSONObject f = new JSONObject(d)
return f;
}
答案 0 :(得分:0)
在当前的实现和JSON结构中,为了获取值,应使用f.get(“ 0”)而不是f.getString(“ 0”)。像这样:
String json = "{ '0': [ 'Mon Apr 08 2019 19:26:37 GMT+0000 (UTC)' ],\n" +
" '1': [ '1234', '456', '1234', '456', '1234', '456', '545' ],\n" +
" '2': [ '1234', '456', '1234', '456', '1234', '456', '545' ],\n" +
" '3': [ '1234', '456', '1234', '456', '1234', '456', '545' ],\n" +
" '4': [ '1234', '456', '1234', '456', '1234', '456', '545' ],\n" +
" '5': [ 'Mon Apr 08 2019 19:30:00 GMT+0000 (UTC)' ] }";
JSONObject f = new JSONObject(json);
System.out.println(f.get("0"));
上面的代码应该可以工作,输出将是:
[““ 2019年4月8日星期一19:26:37 GMT + 0000(UTC)”]
您的JSOn无效。并且邮递员集合中没有正确的application / json标头。 尝试使用此JSON:
{
"0": [
"Mon Apr 08 2019 19:26:37 GMT+0000 (UTC)"
],
"1": [
"1234",
"456",
"1234",
"456",
"1234",
"456",
"545"
],
"2": [
"1234",
"456",
"1234",
"456",
"1234",
"456",
"545"
],
"3": [
"1234",
"456",
"1234",
"456",
"1234",
"456",
"545"
],
"4": [
"1234",
"456",
"1234",
"456",
"1234",
"456",
"545"
],
"5": [
"Mon Apr 08 2019 19:30:00 GMT+0000 (UTC)"
]
}
编辑1:
并将标题添加到POSTMAN
答案 1 :(得分:0)
您的问题不是在构造JSONObject上。
您的问题是,当您尝试将JSONObject
返回为@Produces(MediaType.APPLICATION_JSON)
时,系统不知道如何解析它。
由于@Produces(MediaType.APPLICATION_JSON)
知道将String解析为Json,因此您尝试返回收到的相同对象,并且将看到它的工作原理。
然后尝试将f返回为字符串:
@POST
@Produces(MediaType.APPLICATION_JSON)
@Path("/{nifCliente}") // irrelevant this part, ingore it, important is the String
public String inserir (@PathParam("nifCliente")int c, String d) {
JSONObject f = new JSONObject(d);
return f.toString();
}