当前位置: 首页 > 知识库问答 >
问题:

从Json反序列化到Java中的对象中获取所需值

杨柏
2023-03-14

我需要在PlayFramework中从Json创建object。

 Example example =  Json.fromJson( request().body().asJson() , Example.class);
class Example{
  @Required_from_Json public String name;
  @Required_from_Json public boolen dead;
  @Required_from_Json public Integer age;
   .
   .
 50 more values
}

你们有什么建议吗?

谢谢!!

共有1个答案

公冶伟
2023-03-14

由于您的JSON对象来自请求,因此您实际上可以使用Play的表单工具来处理您的情况。

在您的controller方法中,您只需按以下方式调用它:

final Form<Example> form = Form.form(Example.class).bindFromRequest();

绑定请求中的数据。然后你可以检查一下,看看有没有类似这样的错误:

    if(from.hasErrors()) {
        return badRequest(form.errorsAsJson());
    }
    Example obj = form.get();
import play.data.validation.Constraints;
...

class Example{
  @Constraints.Required public String name;
  @Constraints.Required public boolean dead;
  @Constraints.Required public Integer age;
  .
  .
  50 more values
}

这种方式非常好,因为它返回的错误是特定于字段的,所以您可以将它们显示给用户,并且它将返回一个json对象(form.errorsasjson())中所有字段的所有错误。您还可以使用Play提供的其他验证注释(例如@contraints.email@constraints.minlenth等)

请注意,这对我在Play2.3.x中起作用。我没有使用过任何最近版本的play so YMMV。

 类似资料:
  • 为了确保在我的RESTful web服务中来回发送的数据不冗余,每个嵌套对象都只序列化了它的ID(消息的用户只序列化了用户ID,因为客户端和服务器都已经知道用户的所有详细信息)。 序列化工作正常,产生以下效果: 问题:反序列化不会生成仅具有其ID的嵌套对象。生成的反序列化嵌套对象为空。 以下是前面提到的消息和用户对象。序列化“策略”是从此处指定的第三个选项中使用的:如何仅序列化Jackson的子级

  • 我试图从一个.json数组创建一个数组,并且从当前的.json数组中只获取2个变量(keyName和token)。 目前,我使用了一个api调用来获取.json文件,然后将其解析为一个数组,如下所示: 请帮忙,因为我是初学C#的,如果有些说不通的话,对不起,我的英语不是很好。

  • 我在爪哇是新来的! 我的目标:我有收集的对象,让我保持任何类型的对象通过一些键(如地图)(把他们到它和从)。我可以向它添加任何类型的对象(例如,我可以添加MyClass的对象)。然后,我使用GSON序列化这个对象以JSON格式分离字符串(例如,我可以序列化这个字符串以分离文件)。当我想拿回某个对象时,我通过键从collection请求它,collection将对应的字符串反序列化到object对象

  • 我尝试反序列化json: 我有两个实体: 和 如何使用一个json条目同时反序列化两个实体?以下是使用Jackson ObjectMapper的main摘录: 它解析日期、uuid和数据集,但不能解析具有hmm_subfamily、hmm_evalue和hmm_score值的HmmResult对象:我得到错误:p.getHmmResult():null。(HmmResult hm=ObjMappe

  • 问题内容: 这是我的Java代码,用于反序列化,我正在尝试将json字符串转换为java对象。为此,我使用了以下代码: 和我的product.java类 我收到以下错误。 帮我解决这个问题 问题答案: 似乎您正在尝试从JSON读取一个实际描述数组的对象。Java对象使用花括号映射到JSON对象,但是您的JSON实际上以方括号指定一个数组开始。 您实际拥有的是一个。为了描述泛型类型,由于Java的类

  • 问题内容: 我正在寻找一种在Swift中自动序列化和反序列化类实例的方法。假设我们定义了以下类…… …和实例: 的JSON表示形式如下: 现在,这是我的问题: 我如何序列化实例并获取上面的JSON,而不必手动将类的所有属性添加到变成JSON的字典中? 我如何反序列化上面的JSON并获取静态类型为类型的实例化对象?同样,我不想手动映射属性。 这是使用Json.NET在C#中执行此操作的方法: 问题答