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

标签 java json sockets

我的项目中有一些模型类,如 CustomerProduct 等,它们有几个字段及其 setter-getter 方法,我需要 交换这些类的对象作为 JSONObject 通过 Sockets 往返于客户端和服务器。

有什么方法可以直接从模型类的对象创建 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 服务的经验中(其中完全脱离了这个问题的上下文),我可以使用 @Produces(MediaType.APPLICATION_JSON) 从服务方法返回 JSON 字符串,并让方法返回模型类的对象。所以它生成了 JSON 字符串,我可以在客户端使用它。

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

最佳答案

Google GSON做这个;我已经在几个项目中使用过它,它很简单而且效果很好。它可以在没有干预的情况下对简单对象进行翻译,但也有一种机制可以自定义翻译(双向)。

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

关于java - 直接从 Java 中的模型类创建 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10930624/

相关文章:

java - SparkContext setLocalProperties

javascript - Angular JS 只嵌套一个顶级对象的 ng-repeat?

java - 信任库中信任哪些证书?

java - 在表或类似的表中使用两个主键

java - 在 Spring Boot 中使用 JSP 中的自定义标记文件

javascript - 如何获取对象元素的序号?

python - 使用制表符缩进(不是空格)转储 JSON

C recv() 不读取缓冲区

java - 这个 TCP 交互有什么问题?

java - 我要把我的 socket 改成什么?