gson 사용 소감

구 글 의 것 은 간결 하고 아름 다운 gson 으로 도 마찬가지다.
 
private static Gson gson = new GsonBuilder().setDateFormat(
			"yyyy-MM-dd HH:mm:ss").disableHtmlEscaping().create();
 
다음:
 
return gson.toJson(src);
return gson.fromJson(json, clazz);

 각각 제 이 슨 으로 변 하거나 제 이 슨 으로 변 하 는 것 은 상당히 간단 하지 않 습 니까?
 
그러나 사용 하 는 과정 에서 일부 문 제 를 발견 했다.물론 내 가 사용 할 줄 모 르 는 것 일 수도 있다.바로 from json 에 문제 가 있 는데 주로 다음 과 같다.
 
new TypeToken>
 
from JSon 에서 타 입 을 지정 해 야 합 니 다.타 입 을 지정 하지 않 으 면 복잡 한 대상 이 지정 하지 않 은 타 입 으로 바 뀌 면 틀 릴 수 있 습 니 다.사실은 제 이해 에 따 르 면 gs on 을 String 과 String,Collection(String)으로 전환 하 는 것 을 충분히 이해 할 수 있 습 니 다.그러나 안 타 깝 게 도 gs on 은 대상 의 toString 을 자동 으로 호출 하지 않 기 때문에 유형 을 지정 해 야 합 니 다.그러나 이렇게 하면 bean 에 중대 한 제한 이 있 습 니 다.예 를 들 어 당신 의 bean 중의 모든 대상 의 유형 은 통일 되 어야 합 니 다.예 를 들 어:
 
type = new TypeToken>() {
			}.getType();

 여기 서 json 에서 string,string 의 map 대상 을 구성 한 다음 에 beanutil 을 통 해 bean 을 얻 었 습 니 다.
type = new TypeToken>>() {
			}.getType();
			List ret = new ArrayList();
			List> tempObj = gson.fromJson(json, type);
			for (Map item : tempObj) {
				try {
					T obj = clazz.newInstance();
					for (String key : item.keySet()) {
						String value = item.get(key);
						BeanUtils.setProperty(obj, key, value);
					}
					ret.add(obj);
				} catch (InstantiationException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (InvocationTargetException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
 이 방법 은 약간 sb 로 보이 지만 한참 동안 시도 해 봤 는데 그 럴 수 밖 에 없 는 것 같 습 니 다.제 문서 가 상세 하지 않 은 이유 인지 모 르 겠 습 니 다.이것 은 나중에 답 을 찾 겠 습 니 다.

좋은 웹페이지 즐겨찾기