首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

Play framework 2.0 -Json处置

2012-07-20 
Play framework 2.0 -Json处理?#JSON请求的处理和服务?1.处理Json请求?Json请求是使用有效Json数据作为Htt

Play framework 2.0 -Json处理

?

#JSON请求的处理和服务

?

1.处理Json请求

?

Json请求是使用有效Json数据作为Http请求的请求体的。它的Content-type头必须指定为"text/json"或者"application/json"MIME类型。

默认的,一个动作使用any content 体解析器,你可以把请求(响应)体以Json格式取回来。

?

public static index sayHello() {  JsonNode json = request().body().asJson();  if(json == null) {    return badRequest("Expecting Json data");  } else {    String name = json.findPath("name").getTextValue();    if(name == null) {      return badRequest("Missing parameter [name]");    } else {      return ok("Hello " + name);    }  }}
?

?

?

?

当然了,指定我们自己的BodyParser来让Play把内容体直接解析为Json是更好的方式:

@BodyParser.Of(Json.class)public static index sayHello() {  String name = json.findPath("name").getTextValue();  if(name == null) {    return badRequest("Missing parameter [name]");  } else {    return ok("Hello " + name);  }}
?

注:对于非Json的请求,400 Http响应会被自动返回。

?

你可以在命令行下用curl命令测试:

curl   --header "Content-type: application/json"   --request POST   --data '{"name": "Guillaume"}'   http://localhost:9000/sayHello
?

它返回:

HTTP/1.1 200 OKContent-Type: text/plain; charset=utf-8Content-Length: 15Hello Guillaume
?

?

2.Json响应的服务

?

在以前的例子中我们处理Json请求,但是返回一个"text/plain"的响应。现在我们来发送会一个有效的JsonHttp响应:

@BodyParser.Of(Json.class)public static index sayHello() {  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);  }}
?

现在它的响应是:

HTTP/1.1 200 OKContent-Type: application/json; charset=utf-8Content-Length: 43{"status":"OK","message":"Hello Guillaume"}
?

?

热点排行