结论
使用JSON.toJSONString去序列化Bean的时候
FastJSON会把Bean里面的get开头,有返回值且没有参数的方法都调用一遍。
看代码
package org.example.domain;import lombok.Getter;
import lombok.Setter;/*** @program: parent_pro* @description:* @author: 渭水* @create: 2023/10/31*/
@Getter
@Setter
public class OtherPerson {private Integer age;public String getPerson2(String s) {System.out.println("getPerson");return "abc";}public void getPerson4() {System.out.println("getPerson4");}public void getPerson5(String s) {System.out.println("getPerson5");}public String getPerson3() {System.out.println("getPerson3");return "abc";}
}
测试类如下
package org.example;import com.alibaba.fastjson2.JSON;import org.example.domain.OtherPerson;/*** @program: parent_pro* @description:* @author: 渭水* @create: 2023/11/03*/
public class JSONTest {public static void main(String[] args) {OtherPerson otherPerson = new OtherPerson();otherPerson.setAge(18);System.out.println(JSON.toJSONString(otherPerson));}
}
运行结果
关于ArrayIndexOutOfBoundsException
另外这里用的FastJSON版本是
<dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>2.0.41</version></dependency>
如果版本低于2.0.35,且bean里面有返回值为void的且get开头的方法就会报错:java.lang.ArrayIndexOutOfBoundsException