Как добавить / получить карту с карты в java? - PullRequest
2 голосов
/ 02 марта 2020

Я пытаюсь написать объект, который имеет нормальные пары ключ-значение, а также ключ-значение (карта), т. Е. Ключ с картой в качестве значений.

myobject = {param3 = {key1 = key1 -value1, key2 = key2-value2}, param1 = value1, param2 = value2}

здесь объект имеет значения param1, param2 в виде строки и значение param3 в качестве другой карты.

Итак как правильно конвертировать карту и записать в файл?

 Object songObj = (Object) executionContext.getBeanContext().getBean("myobject");
 // myobject = {param1=value1, param2=value2,param3={key1=key1-value1, key2=key2-value2}}
    HashMap mp = (HashMap) getMapTest1(songObj);
 // HashMap mp = (HashMap) getMapTest2(songObj);
    this.write(mp);

   public static Map<String, Object> getMapTest1(Object obj) {
    ObjectMapper m = new ObjectMapper();
    Map<String, Object> props = m.convertValue(obj, Map.class);
    return props;
   }

  public static Map<String, Object> getMapTest2(Object obj) throws JsonParseException, IOException{
    ObjectMapper mapper = new ObjectMapper();
    JsonFactory factory = new JsonFactory();
    JsonParser json  = factory.createParser(obj.toString());
    TypeReference<Map<String, Object>> typeReference = new TypeReference<Map<String, Object>>() {};
    Map<String, Object> map = mapper.readValue(json, typeReference);        
    System.out.println(map);
    return map;
 }

  public void write(HashMap mp) throws IOException {
    // TODO Auto-generated method stub

    Writer nodeWriter = writer;
    Iterator it = mp.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry pair = (Map.Entry) it.next();
        System.out.println(pair.getKey() + " = " + pair.getValue());
        if (pair != null) {
            nodeWriter.write(pair.getValue().toString());
        }
        nodeWriter.write(",");
    }
    writer.flush();
}


  output should be writen in file as...
  ------------------------------------
  value1,value2
  key1-value1,key2-value2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...