일부 개체에 JSON 직렬화를 구현해야하며 제네릭 컬렉션과 통합 할 때 문제가 발생했습니다.자바 JSON 직렬화 - 모범 사례
모든 직렬화 가능 클래스 것은 (된 JSONObject는 this 라이브러리에서 제공)이 인터페이스를 구현 :
java.util.List가 더 많거나 적은 같은 외모를 기반으로 내 컬렉션에 대한interface JSONSerializable{
public JSONObject dump() throws JSONException //serializes object
public void load(JSONObject obj) throws JSONException //deserializes object
}
코드 :
class AwesomeList<T extends JSONSerializable> implements JSONSerializable{
private LinkedList<T> items = new LinkedList<T>();
...
...
public JSONObject dump() throws JSONException {
JSONObject result = new JSONObject();
JSONArray a = new JSONArray();
for(T i : items){
a.put(i.dump());
}
result.put("items", a);
return result;
}
public void load(JSONObject obj) throws JSONException{
//here is my problem
}
}
내 문제는 : JSONObject에서 AwesomeList를로드 할 때 요소 작성이 필요하지만 Java에서 쓰기를 금지하기 때문에 불가능합니다.
T newItem = new T();
newItem.load(obj);
이 작업에 대한 접근 방식을 어떻게 수정해야합니까?
는 솔직히 말해서 난이도 알려진 작동 표시되지 않습니다 (자바 및 JSON) JSON, 당신은 (꽤 인쇄) JSON 형식으로 사용할 수있는 자바의 직렬화에 추가
유형. 클래스 이름을 JSON 데이터 패킷에 저장 하시겠습니까? – Perception
아니요, 모든 객체는 JSONObject에서 자체를로드하는 방법을 알고 있습니다 (실제로는 연관 배열입니다). 나는 내가하고 싶은 것을 보여주기 위해 글을 업데이트했다. – KCH