我正在尝试使用GSON使用以下结构反序列化JSON:
"FKeyColumn": [{
"ForeignKeyColumns": {
"Id": "Id"
},
"ReferenceTable": "Expense_Group_Configurations"
}],
"FKeyColumn": [{
"ForeignKeyColumns": {
"Vid": "Id"
},
"ReferenceTable": "Expense_Group_Configurations"
}]
...
我不知道如何构造我的ForeignKeyColumns
类,因为它所代表的JSON对象包含任意键值对(除了始终被命名为ForeignKeyColumns的对象之外,没有任何设置结构)。我如何用GSON解析这个?
答案 0 :(得分:0)
它需要一个FKeyColumn对象的自定义反序列化器:
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;
}
}