POST数据未在Play中检索!骨架

时间:2012-01-17 16:58:15

标签: json post playframework

我的视图是发布一组有效的json,例如

[{"profile_sfid":"00eA0000000l3v7IAA", "object":[{"name":"null", "viewable":[],"editable":[]},{"name":"account", "viewable":["Object Type","Salesforce ID"],"editable":["Test Multi","Test Checkbox"]},{"name":"contact", "viewable":["Object Type","Salesforce ID"],"editable":["Test Multi","Test Checkbox"]}]}]

到/ saveAssignments的路线。 post操作返回200成功消息,但控制器方法在logger语句

上为json返回null
public static void saveAssignments(JsonElement json)
{
    Logger.debug("Hey guys, here is my json! " + json);
}

将以下GSONBinder用于JsonElement

@Global
public class GsonBinder implements TypeBinder<JsonElement> {   

@Override   
public Object bind(String name, Annotation[] annotations, String value,  Class actualClass, Type genericType) throws Exception 
{       
    return new JsonParser().parse(value); 
}
}

我们非常感谢任何帮助,因为我不确定为什么它不能正确接受这一点。

2 个答案:

答案 0 :(得分:0)

我正在做类似的事情,使用一个与json对象具有相同结构的pojo类来接收(在这个例子中,是“Player”类):

public class Player {
    public String name;
    ...
}

public static void addPlayerJSON(JsonObject body) {
    Gson gson = new Gson();
    Player newPlayer = gson.fromJson(body, Player.class);
    Logger.debug("Player name: " + newPlayer.name);
    ...
}

“newPlayer”对象具有从json解析的数据。

答案 1 :(得分:0)

如果您传递参数“json = {your json}”,您将在服务器端收到它。或者将“json”参数重命名为“body”,以便它可以使用请求体中发布的json。