2012-01-17 64 views
1

我有一个是在/ saveAssignments发布了一套有效的JSON,如POST数据未在Play中检索!框架

[{"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"]}]}] 

的路线图。 POST操作返回一个200成功的消息,但控制方法的记录声明

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); 
} 
} 

任何帮助,将不胜感激返回null为JSON,因为我不确定为什么它没有正确接受。

回答

0

我在做类似的事情,使用具有相同的结构,JSON对象接受(在本例中,“玩家”类)一个POJO类:

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分析的数据。

0

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