使用Fastjson生成Json字符串少字段属性

发布于 2021-12-05 00:44:55 字数 1951 浏览 774 评论 5

@wenshao 你好,想跟你请教个问题:

我使用Fastjson将节点对象Node生成JSON字符串时少个对象属性,麻烦你看一下是怎么回事,是bug吗?我用Gson就没出现问题!

这是节点对象文件Node.java


package per.eblink.pojo;

public class Node {
	
	private String id;
	private String pId;
	private String name;
	private boolean open;
	
	private Node() {
		super();
	}

	public Node(String id, String pId, String name, boolean open) {
		super();
		this.id = id;
		this.pId = pId;
		this.name = name;
		this.open = open;
	}
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getpId() {
		return pId;
	}
	public void setpId(String pId) {
		this.pId = pId;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public boolean isOpen() {
		return open;
	}
	public void setOpen(boolean open) {
		this.open = open;
	}
	
}

接下来是测试用例JsonTest.java

package per.eblink.test;

import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
import per.eblink.pojo.Node;

public class JsonTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Node node=new Node("2", "1", "节点1",true);
//		FastJson转换方式
		String jsonStr=JSON.toJSONString(node);
//		Gson转换方式
		Gson gson=new Gson();
		String gsonStr=gson.toJson(node);
		System.out.println("FastJson生成字符串是:"+jsonStr);
		System.out.println("Gson生成字符串是:"+gsonStr);
	}

}
最后是控制台打印生成的结果如下:

FastJson生成字符串是:{"id":"2","name":"节点1","open":true}
Gson生成字符串是:{"id":"2","pId":"1","name":"节点1","open":true}
用FastJson就是少了个属性pId没有被转化出来,用Gson和其他的却可以,而我的Node对象只是个普通的JAVA类而已,麻烦你看一下,谢谢!


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

顾忌 2021-12-10 01:08:22
public String getpId() {
		return pId;
	}

这个不符合JSON规范

@JSONField
public String getpId() {
		return pId;
	}

 

@JSONField
public void setpId(String pId) {
		this.pId = pId;
	}

​​​​​​​

三月梨花 2021-12-10 00:18:28

命名好像不太规范。pId.....

哑剧 2021-12-09 17:00:54

看一楼

深巷少女 2021-12-09 16:35:32

亲试,正解!谢谢!

深巷少女 2021-12-06 12:48:40

getpId、setpId这两个方法名改一下吧

改成getPID、setPID试试

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文