Сопоставить <String, HashSet <String >> с JSON & Pretty Print

Я пытаюсь сделать мой набор данных соответствующим этому примеру:

var family = [{
    "name" : "Jason",
    "age" : "24",
    "gender" : "male"
},
{
    "name" : "Kyle",
    "age" : "21",
    "gender" : "male"
}];

у меня естьMap<String, HashSet<String>> Имен и уникальных буквенно-цифровых значений, соответствующих определенным объектам, на которые могут ссылаться эти имена, давайте назовем эти элементы ввода «идентификаторами».

Так, например,Fyodor Mikhailovich Dostoyevsky возможно, будет связано с идентификаторомQ626Поскольку это очень конкретная ссылка, не так много широко известных фигур с таким именем. В то время как,Bush может быть прикреплен кG027, Q290, а такжеQ118ссылаясь, возможно, на человека, пиво и куст, в произвольном порядке.

Это выглядит так (реальная намного больше):

[Rao=[Q7293658, , Q7293657, Q12953055, Q3531237, Q4178159, Q1138810, Q579515, Q3365064, Q7293664, Q1133815], Hani Durzy=[], Louise=[, Q1660645, Q130413, Q3215140, Q152779, Q233203, Q7871343, Q232402, Q82547, Q286488, Q156723, Q3263649, Q456386, Q233192, Q14714149, Q12125864, Q57669, Q168667, Q141410, Q166028], Reyna=[Q7573462, Q2892895, Q363257, Q151944, Q3740321, Q2857439, Q1453358, Q7319529, Q733716, Q16151941, Q7159448, Q5484172, Q6074271, Q1753185, Q7319532, Q5171205, Q3183869, Q1818527, Q251862, Q3840414, Q5271282, Q5606181]]

Используя Джексона, я попытался так:

Map<String, HashSet<String>>  map = q_valMap;
mapper.writeValue(new File("JSON_Output/user.json"), map);

Но это кажется неправильным, так как мой вывод был перепутан, т.е.

{"Rao":["Q7293658","","Q7293657","Q12953055","Q3531237","Q4178159","Q1138810","Q579515","Q3365064","Q7293664","Q1133815"],"Hani Durzy":[""],"Louise":["","Q1660645","Q130413","Q3215140","Q152779","Q233203","Q7871343","Q232402","Q82547","Q286488","Q156723","Q3263649","Q456386","Q233192","Q14714149","Q12125864","Q57669","Q168667","Q141410","Q166028"],"Reyna":["Q7573462","Q2892895","Q363257","Q151944","Q3740321","Q2857439","Q1453358","Q7319529","Q733716","Q16151941","Q7159448","Q5484172","Q6074271","Q1753185","Q7319532","Q5171205","Q3183869","Q1818527","Q251862","Q3840414","Q5271282","Q5606181"]}

Должен ли я просто заполнить этот объект JSON итеративно?

Как и в примере сверху, я думаю, что это должно выглядеть примерно так, хотя ниже приведена лишь псевдокодовая характеристика, то есть не совсем это, а нечто подобное:

{
    key: "Rao"
    value:  ["Q7293658","","Q7293657","Q12953055","Q3531237","Q4178159","Q1138810","Q579515","Q3365064","Q7293664","Q1133815"]

    key: "Hani Durzy"
    value: [""]

    key: "Louise"
    value: ["","Q1660645","Q130413","Q3215140","Q152779","Q233203","Q7871343","Q232402","Q82547","Q286488","Q156723","Q3263649","Q456386","Q233192","Q14714149","Q12125864","Q57669","Q168667","Q141410","Q166028"]

    key: "Reyna"
    value: ["Q7573462","Q2892895","Q363257","Q151944","Q3740321","Q2857439","Q1453358","Q7319529","Q733716","Q16151941","Q7159448","Q5484172","Q6074271","Q1753185","Q7319532","Q5171205","Q3183869","Q1818527","Q251862","Q3840414","Q5271282","Q5606181"]
}

это не правильно?

ОБНОВИТЬ

public class JsonMapFileExample 
{
    public static void map(Map<String, HashSet<String>> q_valMap ) 
    {

        ObjectMapper mapper = new ObjectMapper();


        ArrayNode array = mapper.createArrayNode();
        for ( Entry entry: q_valMap.entrySet() ) 
        {
          ObjectNode node = mapper.createObjectNode()
              .put("name", entry.getKey())
              .put("ids", entry.getValue());
          array.add(node);
        }
        mapper.writeValue("/home/matthias/Workbench/SUTD/nytimes_corpus/wdtk-parent/wdtk-examples/JSON_Output/user.json", array);

    }
}


class MyEntity
{
    private String name;
    Set<String> value; // use names that you want in the result JSON

    //constructors
    public MyEntity() 
    {

    }
    public MyEntity(String name) 
    {
        this.name = name;
    }

    //getters
    public String getName() 
    {
        return this.name;
    }
    public Set<String>  getValue() 
    {
        return this.value;
    }

    //setters
    public void setName(String name) 
    {
        this.name = name;
    }
    public void setValue(Set<String> value) 
    {
        this.value = value;
    }
}

Ответы на вопрос(0)

Ваш ответ на вопрос