从地图值生成JSON

问题描述 投票:0回答:2

我编写了一个方法,使用Jackson对象映射器将地图实体和位置作为参数

public class EntityGenerator {
    private static void generatePartiallySearchableEntity(Map<String, Set<String>> synMap, String root_dir_loc) throws Exception {
    Set < String > namedEntitySet = null;
    synMap.put("severity", namedEntitySet);
    ObjectMapper mapperobj = new ObjectMapper();
    mapperobj.writeValue(new File(root_dir_loc), synMap);
    System.out.println("Test.json file created");
}

public static void main(String args[]) throws Exception {

    Map < String, Set < String >> sysMap = new HashMap<String, Set<String>>();
    Set < String > severityEntitySet = new HashSet<String>();
    severityEntitySet.add("Critical");
    severityEntitySet.add("Error ");
    severityEntitySet.add("Warning ");
    severityEntitySet.add("Information ");

    sysMap.put("Severity", severityEntitySet);

    Set < String > impactEntitySet = new HashSet<String>();
    impactEntitySet.add("Inciden");
    impactEntitySet.add("Risk");
    impactEntitySet.add("Event");

    sysMap.put("Imapct", impactEntitySet);

    String root_dir_loc = "C:\\Users\\rakshitm\\Documents\\test.json";

    generatePartiallySearchableEntity(sysMap, root_dir_loc);
}

我正在获得这样的JSON输出,就像我期望的那样

{"severity":null,"Severity":["Error ","Information ","Critical","Warning "],"Imapct":["Inciden","Risk","Event"]}

我需要这种类型的JSON输出

[
    {
        "value": "event",
        "synonyms": [
            "event"
        ]
    },
    {
        "value": "impact",
        "synonyms": [
            "impact"
        ]
    },
    {
        "value": "severity",
        "synonyms": [
            "severity"
        ]
    },
    {
        "value": "notes",
        "synonyms": [
            "notes"
        ]
    }
]
java json dictionary hashmap jackson
2个回答
0
投票

请参阅以下代码:

package com.abhi.learning.stackoverflow;

import java.util.List;

public class Example {

    private String value;
    private List<String> synonyms = null;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public List<String> getSynonyms() {
        return synonyms;
    }

    public void setSynonyms(List<String> synonyms) {
        this.synonyms = synonyms;
    }

}

主类:

package com.abhi.learning.stackoverflow;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

/**
* Hello world!
*
*/
public class App 
{
    public static void main( String[] args )
    {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.enable(SerializationFeature.INDENT_OUTPUT);

        Example emp = new Example();
        ArrayList<String> al = new ArrayList<String>();
        al.add("Critical");
        al.add("Error ");
        al.add("Warning ");

        emp.setSynonyms(al);

        emp.setValue("Severity");


        Example emp1 = new Example();
        ArrayList<String> al1 = new ArrayList<String>();
        al1.add("Inciden");
        al1.add("Risk");
        al1.add("Event");

        emp1.setSynonyms(al1);

        emp1.setValue("Imapct");

        List<Example> lstEx = new ArrayList<Example>();
        lstEx.add(emp1);
        lstEx.add(emp);
        try {
            objectMapper.writeValue(new File("target/employee.json"), lstEx);
        } catch ( IOException e) {
            e.printStackTrace();
        } 
    }
}

这是我得到的json:

    [
{
    "value":"Imapct",
    "synonyms":[
        "Inciden",
        "Risk",
        "Event"
    ]
},
{
    "value":"Severity",
    "synonyms":[
        "Critical",
        "Error ",
        "Warning "
    ]
}
]

您可以为“events”和“Notes”添加更多Example对象


0
投票

你需要一个遵循规范的Pojo。

class Event {

  private String value;
  private List<String> synonyms;
}

然后你创建一个这个类的列表,这将正确解析你的Json。

List<Event> events = new ArrayList<>();
© www.soinside.com 2019 - 2024. All rights reserved.