gpt4 book ai didi

json - 在 Play 2 中使用 json

转载 作者:行者123 更新时间:2023-12-02 07:31:06 24 4
gpt4 key购买 nike

我正在尝试创建一个简单的应用程序,它允许我创建、读取、更新和删除各种用户。我有一个基本的基于 UI 的 View 、 Controller 和模型,但希望比这更高级并提供 RESTful json 接口(interface)。

但是,尽管我阅读了 Play 2 文档、Play 2 Google 群组和 stackoverflow 网站中可以找到的所有内容,但我仍然无法使其正常工作。

我已经根据之前的反馈更新了我的 Controller ,现在我相信它是基于文档的。

这是我更新的 Controller :

package controllers;

import models.Member;

import play.*;
import play.mvc.*;
import play.libs.Json;
import play.data.Form;

public class Api extends Controller {

/* Return member info - version to serve Json response */
public static Result member(Long id){
ObjectNode result = Json.newObject();
Member member = Member.byid(id);
result.put("id", member.id);
result.put("email", member.email);
result.put("name", member.name);
return ok(result);
}

// Create a new body parser of class Json based on the values sent in the POST
@BodyParser.Of(Json.class)
public static Result createMember() {
JsonNode json = request().body().asJson();
// Check that we have a valid email address (that's all we need!)
String email = json.findPath("email").getTextValue();
if(name == null) {
return badRequest("Missing parameter [email]");
} else {
// Use the model's createMember class now
Member.createMember(json);
return ok("Hello " + name);
}
}

....

但是当我运行这个时,我收到以下错误:

incompatible types [found: java.lang.Class<play.libs.Json>] [required: java.lang.Class<?extends play.mvc.BodyParser>]
In /Users/Mark/Development/EclipseWorkspace/ms-loyally/loyally/app/controllers/Api.java at line 42.

41 // Create a new body parser of class Json based on the values sent in the POST
42 @BodyParser.Of(Json.class)
43 public static Result createMember() {
44 JsonNode json = request().body().asJson();
45 // Check that we have a valid email address (that's all we need!)
46 String email = json.findPath("email").getTextValue();

据我所知,我是从 documentation 复制的。因此,我将不胜感激任何有助于实现此工作的帮助。

最佳答案

Play 2 文档中的 Json 类的使用似乎存在冲突。为了使上面的示例正常工作,使用了以下导入:

import play.mvc.Controller;
import play.mvc.Result;
import play.mvc.BodyParser;
import play.libs.Json;
import play.libs.Json.*;

import static play.libs.Json.toJson;

import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.node.ObjectNode;

@BodyParser.Of(play.mvc.BodyParser.Json.class)
public static index sayHello() {
JsonNode json = request().body().asJson();
ObjectNode result = Json.newObject();
String name = json.findPath("name").getTextValue();
if(name == null) {
result.put("status", "KO");
result.put("message", "Missing parameter [name]");
return badRequest(result);
} else {
result.put("status", "OK");
result.put("message", "Hello " + name);
return ok(result);
}
}

注意在 @BodyParser 中显式调用正确的 Json

不知道这是否是一个错误?但这是我使示例正常工作的唯一方法。

关于json - 在 Play 2 中使用 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10471182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com