【问题标题】:Convert java bean to json string using Struts使用 Struts 将 java bean 转换为 json 字符串
【发布时间】:2014-04-12 22:58:22
【问题描述】:

我想使用 struts 在 JSP 页面中呈现内容。

我有实现 Serializable 的 Java Bean 类:

public class MyPOJO implements Serializable {
    String name;
    int value;
    // A lot of other members, but all String or int
    // Getters and setters
}

我的表单类带有 MyPOJO 列表:

public class MyForm extends ActionForm {
    private List<MyPOJO> results = new ArrayList<MyPOJO>();
    // Getter and setter
}

还有一个类继承 DispatchAction 将 MyForm 对象传递到页面上。

在我使用的jsp页面上:

<logic:notEmpty name="myForm" property="results">
var jsonData = ${myForm.results};
</logic:notEmpty>

生成的jsp文件中的最终结果是一个MyPOJO对象列表:

var jsonData = [com.package.MyPOJO@174aee5, ...]

我想知道,在不覆盖 MyPOJO 类中的 toString() 方法的情况下,还有其他方法可以直接将其转换为 json String 吗?我还创建了一个返回 MyPOJO 列表的 rest 服务,没有 toString() 方法,它已经可以显示 JSON 字符串,我想知道为什么它不适用于 JSP 表单 bean?

【问题讨论】:

  • 这是因为 REST 框架(我猜是 Jax-RS)将您返回的对象转换为 JSON。它不会神奇地发生。如果您想要 JSON,请使用 JSON 编组器(Jackson、Gson 等)将您的对象转换为 JSON 字符串。为什么要使用废弃框架(Struts)的已弃用标签库(逻辑)?
  • 感谢您的回答!因为这是我正在从事的一个非常古老的项目......

标签: java json struts javabeans


【解决方案1】:

因为你没有覆盖 ArrayList toString() 方法。您的属性是一个必须序列化为 JSON 的集合。您可以扩展 ArrayList 并覆盖该方法,或者使用本机 JSONArrayJSONObject toString() 已被覆盖并返回 JSON 字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 2017-01-24
    • 2013-05-19
    相关资源
    最近更新 更多