使用Jackson ObjectMapper进行java序列化
我正在尝试使用Jackson库和以下代码序列化下面的GAccount对象ArrayList:
List<Gaccount> gAccounts;
ObjectMapper mapper=new ObjectMapper();
json=mapper.writeValueAsString(gAccounts);
然而,我注意到只有Id和Name字段被序列化,而不是属性。对不起,我是新来杰克逊图书馆的。我必须手动序列化该字段吗
package in.co.madhur.ganalyticsdashclock;
import java.util.ArrayList;
import java.util.List;
public class GAccount
{
private String Id;
private String Name;
private List<GProperty> properties=new ArrayList<GProperty>();
public GAccount(String Id, String Name)
{
this.Id=Id;
this.Name=Name;
}
public String getName()
{
return Name;
}
public void setName(String name)
{
Name = name;
}
public String getId()
{
return Id;
}
public void setId(String id)
{
Id = id;
}
List<GProperty> getProperties()
{
return properties;
}
void setProperties(List<GProperty> properties)
{
this.properties = properties;
}
@Override
public String toString()
{
return Name;
}
}
# 1 楼答案
我正在使用jackson 2.9.0。默认可见性对所有成员来说总是“false”。在这种情况下,我们总是需要使用不同的可见性,否则结果json字符串将为空。下面是从JsonAutoDetect中提取的代码
# 2 楼答案
默认可见性是使用所有公共getter方法和所有公共属性。如果你让getter做到这一点:
应该行得通
您也可以更改自动检测默认值,但这太过分了。有关更多信息,请参见http://www.cowtowncoder.com/blog/archives/2011/02/entry_443.html