Back End/Spring

[Spring] 자바 객체를 json String으로 변환, json String을 다시 객체로 변환 (net.sf.json)

염소 2021. 10. 4. 13:53
반응형

■ 목표

- Spring 안에서 객체를 Json String으로 변환.

- 변환된 Json String을 다시 객체로 변환.

- 객체는 List와 다른 객체, 인터페이스로 이루어진 복잡한 객체이다.

 

■ 예제

아래의 간단한 클래스들을 가지고 테스트.

Group 클래스의 객체를 생성 후 json String으로 변환, 다시 Group객체로 변환한다.

 

Group은 User인터페이스를 멤버로 가지고 있다.

public class Group {
    private User master;
    private List<User> userList;
    
    //json변환 시 사용할 클래스맵  >> userList의 클래스가 SimpleUser임을 알려준다.
    public static Map getClassMap() {
      Map classMap = new HashMap();
      classMap.put("userList", SimpleUser.class);

      return classMap;
    }
}

public interface User {
}

public class SimpleUser implements User {
    private String id;
    private String email;
    private String password;
    private String name;
}

 

■ 예제

아래의 간단한 클래스들을 가지고 테스트.

Group 클래스의 객체를 생성 후 json String으로 변환, 다시 Group객체로 변환한다.

 

* JSON String으로 변환

public String convertObjectToJsonString(Group group) {
  ObjectMapper mapper = new ObjectMapper();
  String jsonStr = null;
  try {
  	jsonStr = mapper.writeValueAsString(group);
  } catch (JsonProcessingException e) {
 	 e.printStackTrace();
  }
  return jsonStr;
}

 

* 다시 객체로 변환

public Group convertJsonStringToObject(String jsonStr) {
	JSONObject jsonObj = (JSONObject) JSONSerializer.toJSON(jsonStr);
	Group group = (Group) JSONObject.toBean(jsonObj, Group.class, Group.getClassMap());
	return group;
}
반응형