я следующие классы Java:Как разобрать JSON для списка с помощью карт в Gson?
public class ModuleParsed {
String id_component;
String id_instance;
Map<ModuleParam, ModuleParam> input;
Map<ModuleParam, List<ModuleParam>> output;
int id_paas;
}
и
public class ModuleParam {
String name;
Object type;
}
что должно быть в формате JSON, как ожидается, разобрать его как List<ModuleParsed>
?
listModules = gson.fromJson(br, new TypeToken<List<ModuleParsed>>() {}.getType());
Все было нормально, пока я не представил параметры ввода и вывода.
EDIT
Делая обратный процесс я нашел JSON должно быть что-то вроде
[
{
"id_component": "mod1",
"id_instance": "mod1_inst1",
"input": {
"moduleParam": {
"name": "param3",
"type": "obj3"
},
"moduleParam": {
"name": "param2",
"type": "obj2"
}
},
"id_paas": 1
},
{
"id_component": "mod2",
"id_instance": "mod2_inst1",
"input": {
"moduleParam": {
"name": "param3",
"type": "obj3"
},
"moduleParam": {
"name": "param2",
"type": "obj2"
}
},
"id_paas": 1
}
]
где moduleParam элементы не были чем-то вроде: [email protected]
Независимо от того, как я называю эти элементы я получаю следующую ошибку:
Exception in thread "main" com.google.gson.JsonParseException: Expecting object found: "moduleParam"
Как я могу получить класс ModuleParsed
с Gson?
Использование изменчивых сложных объектов в качестве клавиш «Карта» - это очень плохая идея, особенно если вы не переопределили равные и хэш-коды. Вам также очень сложно создать из них полезный JSON. См. Http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/GsonBuilder.html#enableComplexMapKeySerialization() –
@Brian, было бы возможно, если бы я просто использовал Map> вместо этого? –
eskalera