fastjson JSON.toJSONString缺陷,无法识别相似的变量名

kq4fsx7k  于 2021-11-27  发布在  Java
关注(0)|答案(2)|浏览(290)

1. 正常示例

1.1. 程序代码

public class TestCase {

	protected String _mode;

	public String get_mode() {
		return _mode;
	}
}

1.2 测试代码

TestCase tc = new TestCase();
tc.set_mode("hello");
System.out.println(JSON.toJSONString(tc));

1.3 输出与期望一致

{"_mode":"hello"}

2. 异常示例

2.1. 程序代码

public class TestCase {

	protected String _mode;

	protected Mode mode;

	public String get_mode() {
		return _mode;
	}

	public void set_mode(String _mode) {
		this._mode = _mode;
	}

	public Mode getMode() {
		return mode;
	}

	public void setMode(Mode mode) {
		this.mode = mode;
	}

	public static class Mode {

		protected String a;

		protected String b;

		public String getA() {
			return a;
		}

		public void setA(String a) {
			this.a = a;
		}

		public String getB() {
			return b;
		}

		public void setB(String b) {
			this.b = b;
		}

	}
}

2.2 测试代码

TestCase tc = new TestCase();
tc.set_mode("hello");
System.out.println(JSON.toJSONString(tc));

2.3 输出与期望不一致(丢失下画线)

{"mode":"hello"}

为啥无法正常识别mode和_mode?

cetgtptt

cetgtptt1#

下划线不符合setget方法的默认规则。

yyyllmsg

yyyllmsg2#

@munan56,那为啥第一个用例(1. 正常示例)会通过?而不是报错?

相关问题