我有一个Hashmap<String, List<Object>>
我想和 jackson 一起整理 map 。它与 JSON 完美配合,如下所示:
{
"entriesByTable": {
"Karlsruhe": [
{
"counts": 126,
"hashTag": "#Karlsruhe"
},
{
"counts": 26,
"hashTag": "#jobs"
},
{
"counts": 3,
"hashTag": "#etka16"
}, ...
但是当涉及到 XML 时,我的结构如下所示:
<?xml version="1.0"?>
<Database>
<entriesByTable>
<Karlsruhe>
<hashTag>#Karlsruhe</hashTag>
<counts>127</counts>
</Karlsruhe>
<Karlsruhe>
<hashTag>#jobs</hashTag>
<counts>27</counts>
</Karlsruhe>
<Karlsruhe>
<hashTag>#etka16</hashTag>
<counts>3</counts>
</Karlsruhe> ...
但我想要/需要相同的 Json 结构:
<Database>
<entriesByTable> (mapname)
<Karlsruhe> (key)
<entries> (value (list))
<entry>
<counts>126</counts>
<hashTag>#Karlsruhe</hashtag>
</entry>
</entries>
</Karlsruhe>
</entriesByTable>
</Database>
我的类(class):
@JacksonXmlRootElement
public class Database {
private static String DATABASE_LOCATION;
@JsonProperty
private Map<String, List<DatabankEntry>> entriesByTable = new HashMap<>(); ...
第二类:
@JacksonXmlRootElement
public class DatabankEntry implements Comparable<DatabankEntry> {
@JsonIgnore
private String tableName;
@JacksonXmlProperty
private String hashTag;
@JacksonXmlProperty
private int counts;
如果有人有想法那就太棒了。也许我的注释有误?
最佳答案
好的,我自己解决了这个问题。我创建了一个新类,其中包含条目列表并注释了列表对象。
@NoArgsConstructor
public class DatabaseEntries {
@JacksonXmlProperty(localName="Entry")
@JacksonXmlElementWrapper(localName="Entries")
@JsonProperty
private List<DatabaseEntry> databaseEntries = new LinkedList<>();
public int size(){
return databaseEntries.size();
}
@JsonIgnore
public List<DatabaseEntry> getAllEntries(){
Collections.sort(databaseEntries);
return databaseEntries;
}
public void add(DatabaseEntry databaseEntry){
databaseEntries.add(databaseEntry) ;
}
}
我的 HashMap 现在看起来像这样 Hashmap<String,Object>
@JsonProperty
@JacksonXmlProperty(localName = "EntriesByTable")
private Map<String, DatabaseEntries> entriesByTable = new HashMap<>();
和我的 XML:
<?xml version="1.0"?>
<Database>
<EntriesByTable>
<Karlsruhe>
<Entries>
<Entry>
<HashTag>#Karlsruhe</HashTag>
<Counts>700</Counts>
</Entry>
<Entry>
<HashTag>#Feuerwehr</HashTag>
<Counts>114</Counts>
</Entry>
....
JSON:
{
"entriesByTable": {
"Karlsruhe": {
"databaseEntries": [
{
"counts": 700,
"hashTag": "#Karlsruhe"
},
{
"counts": 114,
"hashTag": "#Feuerwehr"
},
关于java - 使用 Jackson 将 hashmap 编码为 XML - 结构错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37961824/