我试图让一个简单的帖子 Controller 读取和操作来自带有帖子请求的 JSON 的内容。但我只了解如何从第一个对象读取一个属性,而 JSON 包含它们的列表。 不幸的是,对于像我这样的弱者来说,官方文档并不是最好的,所以考虑到我必须对来自 JSON 的对象列表进行排序,是否可以获得具有核心功能的简单代码?
我的 Json:
[
{
"id": 2,
"name": "James",
"starttime": "2011-04-19T06:16:56-07:00"
},
{
"id": 1,
"name": "Jack",
"starttime": "2014-11-07T21:12:11-07:00"
}
]
我的类(class):
package controllers;
import com.fasterxml.jackson.databind.JsonNode;
import play.mvc.BodyParser;
import play.mvc.Controller;
import play.mvc.Result;
public class CustomersController extends Controller {
@BodyParser.Of(BodyParser.Json.class)
public Result index() {
JsonNode json = request().body().asJson();
String name = json.findPath("name").textValue();
if(name == null) {
return badRequest("Missing parameter [name]");
} else {
return ok("Hello " + name);
}
}
}
以及我在 Restful 客户端上获得的响应:
Hello James!
那么,如何读取所有对象呢?如何使用对象映射器或 Jackson 功能?
最佳答案
Json 对象映射(在底层使用 Jackson)是 Playframework 的一部分:https://www.playframework.com/documentation/2.5.x/JavaJsonActions#Mapping-Java-objects-to-JSON
public class Foo {
public int id;
public String name;
public Date date;
}
public class CustomersController extends Controller {
@BodyParser.Of(BodyParser.Json.class)
public Result index() {
JsonNode json = request().body().asJson();
Foo foo1 = Json.fromJson(json, Foo.class);
return ok("Hello " + foo1.name);
}
}
关于java - 玩Java框架,如何存储通过Post请求来自单个JSON的JSON对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39306039/