source

파일에 쓰지 않고 Jackson을 사용하여 Map을 JSON 표현으로 변환할 수 있는 방법이 있습니까?

manycodes 2023. 3. 27. 21:22
반응형

파일에 쓰지 않고 Jackson을 사용하여 Map을 JSON 표현으로 변환할 수 있는 방법이 있습니까?

잭슨을 사용하여 HashMap을 JSON 표현으로 변환하려고 합니다.

하지만 제가 지금까지 봐온 모든 방법에는 파일에 쓴 다음 다시 읽는 것이 포함되는데, 이는 정말 비효율적인 것 같습니다.직접 할 수 있는 방법이 없을까요?

예를 들어 다음과 같습니다.

public static Party readOneParty(String partyName) {
  Party localParty = new Party();
  if(connection==null) {
    connection = new DBConnection();
  } try {
    String query = "SELECT * FROM PureServlet WHERE PARTY_NAME=?";
    ps = con.prepareStatement(query);
    ps.setString(1, partyName);
    resultSet = ps.executeQuery();
    meta = resultSet.getMetaData();
    String columnName, value;
    resultSet.next();
    for(int j=1;j<=meta.getColumnCount();j++) { // necessary to start at j=1 because of MySQL index starting at 1
      columnName = meta.getColumnLabel(j);
      value = resultSet.getString(columnName);
      localParty.getPartyInfo().put(columnName, value); // this is the hashmap within the party that keeps track of the individual values. The column Name = label, value is the value
    }
  }
}

public class Party {

  HashMap <String,String> partyInfo = new HashMap<String,String>();

  public HashMap<String,String> getPartyInfo() throws Exception {
    return partyInfo;
  }
}

출력은 다음과 같습니다.

"partyInfo": {
  "PARTY_NAME": "VSN",
  "PARTY_ID": "92716518",
  "PARTY_NUMBER": "92716518"
}

지금까지 제가 접한 모든 예는ObjectMapper파일에 쓴 다음 다시 읽는 것을 포함합니다.

잭슨의 자바 버전이 있나요?HashMap또는Map제가 구현한 것과 유사한 방식으로 작동할까요?

지도 전달 대상ObjectMapper.writeValueAsString(Object value)

사용하는 것보다 효율적입니다.StringWriter문서에 따르면 다음과 같습니다.

Java 값을 문자열로 시리얼화하기 위해 사용할 수 있는 메서드.기능적으로는 StringWriter를 사용하여 writeValue(Writer, Object)를 호출하고 String을 구성하는 것과 동일하지만 보다 효율적입니다.

import org.codehaus.jackson.map.ObjectMapper;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class Example {

    public static void main(String[] args) throws IOException {
        Map<String,String> map = new HashMap<>();
        map.put("key1","value1");
        map.put("key2","value2");

        String mapAsJson = new ObjectMapper().writeValueAsString(map);
        System.out.println(mapAsJson);
    }
}

StringWriter 를 사용할 수 있습니다.

package test;

import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;

public class StringWriterExample {

    private static ObjectMapper objectMapper = new ObjectMapper();

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

        Map<String,String> map = new HashMap<>();
        map.put("key1","value1");
        map.put("key2","value2");

        StringWriter stringWriter = new StringWriter();

        objectMapper.writeValue(stringWriter, map);

        System.out.println(stringWriter.toString());
    }
}

생산하다

{"key2":"value2","key1":"value1"}

언급URL : https://stackoverflow.com/questions/17819710/is-there-any-way-to-convert-a-map-to-a-json-representation-using-jackson-without

반응형