当前位置: 首页 > 面试题库 >

直接从Java中的模型类创建JSON对象

葛昕
2023-03-14
问题内容

我的项目中有一些模型类,例如CustomerProduct等等,它们具有多个字段及其setter-getter方法,我需要 通过套接字
与客户端和服务器之间 来回交换这些类的对象作为JSONObject

有什么方法可以JSONObject直接从模型类的对象创建,以使对象的字段成为键,而该模型类对象的值成为此JSONObject的值。

例:

Customer c = new Customer();
c.setName("Foo Bar");
c.setCity("Atlantis");
.....
/* More such setters and corresponding getters when I need the values */
.....

我创建JSON对象为:

JSONObject jsonc = new JSONObject(c); //I'll use this only once I'm done setting all values.

这让我有点像:

{"name":"Foo Bar","city":"Atlantis"...}

请注意,在我的某些模型类中,某些属性本身 是其他模型类的对象 。如:

Product p = new Product();
p.setName("FooBar Cookies");
p.setProductType("Food");
c.setBoughtProduct(p);

如我所料,在上述情况下,产生的JSON对象为:

{"name":"Foo Bar","city":"Atlantis","bought":{"productname":"FooBar Cookies","producttype":"food"}}

我知道我可以toJSONString()在每个模型类中创建类似的东西,然后创建并处理JSON友好的字符串,但是根据我以前在Java中创建RESTful服务的经验(此问题完全不在上下文中),我可以返回通过使用来自服务方法的JSON字符串,并使@Produces(MediaType.APPLICATION_JSON)方法返回模型类的对象。因此它产生了JSON字符串,我可以在客户端使用它。

我想知道在当前情况下是否有可能获得类似的行为。


问题答案:

Google GSON做到了;我已经在多个项目中使用了它,它很简单并且运行良好。它可以在不干预的情况下完成简单对象的翻译,但是也有一种自定义翻译的机制(双向)。

Gson g = ...;
String jsonString = g.toJson(new Customer());


 类似资料:
  • 问题内容: 我用来将Java对象序列化/反序列化为json。我想在中显示它,并且需要一个架构来做出更好的描述。这将允许我编辑对象并添加比实际更多的数据。 可以提供json模式吗? 是否有其他框架具有该功能? 问题答案: Gson库可能不包含类似的功能,但是您可以尝试使用Jackson库和jackson- module-jsonSchema 模块解决您的问题。例如,对于以下类别: 这个程序: 打印以

  • 我有很多实体扩展了实体,也有很多数据扩展到 我有一个通用的存储库、服务和映射器,如下所示 我的仓库: 我的服务: 我的地图绘制者: 我想在方法中从T创建一个对象,在类中从方法中从Dto创建一个对象

  • 我有两个json对象,请不要是字符串,我想将它们组合成一个json对象,如下所示。 两个对象: 预期结果: 有没有一种优雅的方法可以做到这一点?我的意思是,不提取每支笔和每本书的值,然后使用以下方法将它们重新插入包 我正在使用org。科德豪斯。抛弃json。JSONObject,如果需要该信息。

  • 嗨,我是TypeScript新手,我来自C#和JavaScript背景。我正在尝试创建一种方法,使我能够创建类似于C#的类模型。 以下是我尝试过的: 我希望这会生成一个JavaScript模型,公开声明的属性,但这只生成一个函数,没有声明属性。 在查看文档之后,我注意到为了公开属性,我必须添加一个构造函数并从中初始化属性。虽然这可能会起作用,但在每个模型可能有20个或更多属性的情况下,这并没有帮助

  • 为了持久化数据,我首先创建了如下所示的user对象,并使用sessionFactory进行保存。 由于上述努力,创建了userid数据为int的用户表。 但后来我将POJO的userid数据类型更改为string。 另外,我将hbm2ddl属性更改为update。 因此,在此更改之后,即使用户对象使用字符串作为userid,表userid数据类型也不会更改为varchar。如何使用hibernat

  • 我试图直接理解object属性的初始化,但得到一个编译错误。 null null 我不想使用构造函数初始化object,只是为了理解Java语法。请告诉我是否有一种方法可以像在C#中一样在Java中初始化对象,如new Employee(){Name=“john”}