2016-09-02 4 views
0

내가 GSON 사용하여 다음과 같은 구조로 JSON을 역 직렬화하기 위해 노력하고있어 개체 :역 직렬화 JSON은 가변 구조 GSON

"FKeyColumn": [{ 
       "ForeignKeyColumns": { 
        "Id": "Id" 
       }, 
       "ReferenceTable": "Expense_Group_Configurations" 
      }], 

"FKeyColumn": [{ 
       "ForeignKeyColumns": { 
        "Vid": "Id" 
       }, 
       "ReferenceTable": "Expense_Group_Configurations" 
      }]  

      ... 

을 내가 JSON 객체 있기 때문에,하지만 내 ForeignKeyColumns 클래스를 구성하는 방법을 잘 모르겠어요 그것을 represent는 임의의 키 - 값 쌍을 포함합니다 (항상 ForeignKeyColumns라는 이름의 객체를 제외하고 설정된 구조가 없음). GSON으로 어떻게 파싱 할 수 있습니까?

public class FKeyColumnDeserializer implements JsonDeserializer<FKeyColumn> { 

      public FKeyColumn deserialize(final JsonElement json, final Type typeOfT, final JsonDeserializationContext context) 
       throws JsonParseException { 
      final JsonArray jsonFKArray = json.getAsJsonArray(); 
      final FKeyColumn fkc = new FKeyColumn(); 

      for (int i = 0; i < jsonFKArray.size(); i++) { 
       final JsonObject fkObject = (JsonObject) jsonFKArray.get(i); 
       final String ReferenceTable = fkObject.get("ReferenceTable").getAsString(); 
       final JsonObject ForeignKeyColumns = (JsonObject) fkObject.get("ForeignKeyColumns"); 

       Set<Entry<String, JsonElement>> entrySet = ForeignKeyColumns.entrySet(); 
       for(HashMap.Entry<String, JsonElement> entry : entrySet){ 
        fkc.fkRefTableMap.put(entry.getKey(), ReferenceTable); 
       } 
      } 


      return fkc; 
      } 
    } 
:

답변

0

그것은 FKeyColumn 개체에 대한 사용자 정의 디시리얼라이저 필요