Java 如何在play framework controller中从单个JsonNode获取不同bean中的值
我正在使用Java的play框架。我还使用jqueryajax发布我的数据(Java 如何在play framework controller中从单个JsonNode获取不同bean中的值,java,ajax,json,playframework,Java,Ajax,Json,Playframework,我正在使用Java的play框架。我还使用jqueryajax发布我的数据(String表示JsonNode)。我正在控制器类中编写一个动作方法来为这个ajax调用提供服务 我面临的问题是,我用jQueryAjax发送的数据有10个文本字段值。我有3个bean类(即MyClass1,MyClass2,MyClass3),它们共同拥有这10个变量来捕获这些文本字段值。如果我只有一个bean(比如,MyClass1`),其中定义了10个变量,那么我可以编写如下代码: JsonNode json =
String
表示JsonNode
)。我正在控制器类中编写一个动作方法来为这个ajax调用提供服务
我面临的问题是,我用jQueryAjax发送的数据有10个文本字段值。我有3个bean类(即MyClass1,
MyClass2,
MyClass3),它们共同拥有这10个变量来捕获这些文本字段值。如果我只有一个bean(比如,
MyClass1`),其中定义了10个变量,那么我可以编写如下代码:
JsonNode json = request().body().asJson();
MyClass1 obj1 = Json.fromJson(json, MyClass1.class);
并可轻松访问obj1
中的值
但是我有3个bean,在第一个bean中有3个变量,在第二个bean中有5个变量,在第三个bean中有2个变量。这就产生了一个问题
如何根据需要以正确的方式在MyClass1 obj1
、MyClass2 obj2
、MyClass3 obj3
中获取这10个文本字段值。换句话说,如何实现JsonNode
的拆分。或者类似的方法在所有3个bean中获得适当的值
任何帮助或任何线索都非常感谢。提前谢谢。
怎样才能得到这些呢?这个问题的答案很简单。我所做的是 我在bean
MyClass1
中添加了以下两行:
public MyClass2 m2;
public MyClass3 m3;
我在控制器的json方法中保留了与之前相同的代码,即:
JsonNode json = request().body().asJson();
MyClass1 obj1 = Json.fromJson(json, MyClass1.class);
在jquery中,我创建了一个复杂的jsonvar
(注意:请看下面的data1
):
然后,在进行ajax调用时,只需将data1
传递为:
$.ajax({
url: '/myUrl/data1',
type: 'POST',
data: JSON.stringify(data1),
contentType: "application/json",
..
..
..
});
现在在控制器的json方法中,我可以访问
obj1.m2
和obj1.m3
,并可以解决我的问题。(无需考虑拆分JsonNode
)我可以想到的一种方法是:我应该进行3个不同的ajax调用,发送适合MyClass1、MyClass2和MyClass3的数据值。但这将是最后一个优先解决方案,因为3个http请求并不比单个http请求好。
$.ajax({
url: '/myUrl/data1',
type: 'POST',
data: JSON.stringify(data1),
contentType: "application/json",
..
..
..
});