You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mule 4:如何将自定义Java对象正确转换为JSON?

问题描述

我有如下自定义Java对象类:

package com.me;

public class Person {
    
    String firstName;
    String lastName;
    
    public String toString(){
        return "{firstName=" + this.firstName + ",lastName=" + this.lastName + "}";
    }

}

我希望将JSON负载转换为该对象,再转换回JSON。为此,我使用DataWeave及以下转换消息处理器:

%dw 2.0
output application/java 
---
{
  "firstName": "Mickey",
  "lastName": "Mouse",
} as Object {class : "com.me.Person"}

此操作返回已更新姓名的对象。之后,我尝试用以下脚本将其转换回JSON:

%dw 2.0
output application/json
---
payload

但返回的是空JSON对象:

{}

请问应如何修改我的Java类,以得到如下格式的JSON负载?

{
      "firstName": "Mickey",
      "lastName": "Mouse"
}
解决方案

出现空JSON的原因是DataWeave依赖Jackson进行Java对象序列化,默认情况下Jackson无法访问包私有(默认权限)的firstName和lastName字段,也没有对应的Getter方法读取字段值,因此序列化时输出空对象。

你可以任选以下一种方式修改Java类:

方法1:添加Getter方法(推荐,符合JavaBean规范)

给字段添加标准的Getter方法,Jackson会自动通过这些方法读取字段值:

package com.me;

public class Person {
    
    String firstName;
    String lastName;
    
    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }
    
    public String toString(){
        return "{firstName=" + this.firstName + ",lastName=" + this.lastName + "}";
    }

}

方法2:将字段设为public权限

直接开放字段的访问权限,让Jackson可以直接读取字段内容:

package com.me;

public class Person {
    
    public String firstName;
    public String lastName;
    
    public String toString(){
        return "{firstName=" + this.firstName + ",lastName=" + this.lastName + "}";
    }

}

方法3:使用Jackson注解标记可序列化字段

如果不想修改权限或添加Getter,可通过@JsonProperty注解显式告知Jackson要序列化这些字段:

package com.me;

import com.fasterxml.jackson.annotation.JsonProperty;

public class Person {
    
    @JsonProperty
    String firstName;
    @JsonProperty
    String lastName;
    
    public String toString(){
        return "{firstName=" + this.firstName + ",lastName=" + this.lastName + "}";
    }

}

完成修改后,再用原DataWeave脚本转换即可得到目标JSON格式。

内容的提问来源于stack exchange,提问作者Pierre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 19:36:17