我正在使用一条路线将json发布到基于Play Framework 2的应用程序:
这是路径文件的内容:
POST /api/localfeeds controllers.Application.addMessage()
这是我的java代码:
public static Result addMessage() {
JsonNode json = request().body().asJson();
if(json == null) {
return badRequest("Expecting Json data");
} else {
String message = json.findPath("message").getTextValue();
String patate = json.findPath("patate").getTextValue();
String potato = json.findPath("potato").getTextValue();
if(message == null || patate == null || potato == null) {
return badRequest("Missing parameter");
} else {
double patateD = Double.parseDouble(patate);
double potatoD = Double.parseDouble(potato);
return ok("Json " + json);
}
}
}
最后我正在使用curl命令:
curl --header "Content-type: application/json" --request POST --data '{"message": "Guillaume", "potato": "59.34324", "patate": "38.32424"}' http://localhost:9000/api/localfeeds
现在,我想要做的是传递多个Json对象并用Java处理它们,这意味着我想让它工作:
curl --header "Content-type: application/json" --request POST --data '[{"message": "Guillaume", "potato": "59.34324", "patate": "38.32424"}, {"message": "Guillaume2", "potato": "592.34324", "patate": "382.32424"}]' http://localhost:9000/api/localfeeds
在Google上阅读答案时,我发现我应该使用JSONArray和JSONObject,但我在以下代码中收到错误:
public static Result addMessage() {
JsonNode json = request().body().asJson();
JSONArray jsonarr = new JSONArray(json);
if(json == null) {
return badRequest("Expecting Json data");
} else {
for(int i = 0; i < jsonarr.length(); i++){
JSONObject jsonobj = jsonarr.getJSONObject(i);
String message = jsonobj.findPath("message").getTextValue();
String patate = jsonobj.findPath("patate").getTextValue();
String potato = jsonobj.findPath("potato").getTextValue();
if(message == null || patate == null || potato == null) {
return badRequest("Missing parameter");
} else {
double patateD = Double.parseDouble(patate);
double potatoD = Double.parseDouble(potato);
return ok("jsonobj " + jsonobj);
}
}
}
}
我做错了什么?