java - 玩Java框架,如何存储通过Post请求来自单个JSON的JSON对象?

标签 java json playframework jackson

我试图让一个简单的帖子 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/

相关文章:

javascript - 数组转json

javascript - 如何以 Angular 组合单一形式的两个部分?

scala - Lagom 中的多部分表单数据

java - 如何将 Android Studio 项目导出为 zip 文件?

ios - swiftyjson 从 json 数组中获取字符串

java - 转移到maven后,我编译的jar文件无法运行

Java/Scala - 响应式(Reactive)流/枚举如何连续读取输入流直到 read() 返回 -1

playframework - 在虚拟机上 Play Framework 2性能问题

java - 找到给定集合的最长单词

java - 碧 Jade 报告 : JRBeanCollectionDataSource cannot be resolved to a type