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

blinkfox 发布于 2013/11/03 22:18
阅读 9K+
收藏 0

【直播预告】大模型会取代程序员吗?”

@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类而已,麻烦你看一下,谢谢!


加载中
0
dreamers
dreamers
命名好像不太规范。pId.....
0
文星
文星
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
wenshao
wenshao
public String getpId() {
		return pId;
	}

这个不符合JSON规范

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

 

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

​​​​​​​

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部