На декодирование структуры JSON в Java уже дан ответ, и я использовал ее для нескольких простых структур, но это кажется немного сложным. (Я не тратил слишком много времени на разработку Java-кода, поэтому я могу упустить кое-что специфическое для языка здесь, и я тоже могу ошибаться в этом)
{
"who": "123",
"mapping": {
"element1": {
"element11": {
"relation": "rel1",
"direction_p2c": true,
"element111": {
"relation": "rel2",
"direction_p2c": true,
"element1111": {
"relation": "rel1",
"direction_p2c": false
},
"element1112": {
"relation": "rel1",
"direction_p2c": false
},
"element1113": {
"relation": "rel1",
"direction_p2c": false
}
},
"element112": {
"relation": "rel3",
"direction_p2c": false
}
},
"element12": {
"relation": "rel1",
"direction_p2c": true,
"element121": {
"relation": "rel2",
"direction_p2c": true,
"element1211": {
"relation": "rel1",
"direction_p2c": false
}
}
}
},
"element2": {
"element21": {
"relation": "rel2",
"direction_p2c": true
},
"element22": {
"relation": "rel3",
"direction_p2c": true
},
"element23": {
"relation": "rel1",
"direction_p2c": true
}
}
}
}
Выше упомянутая структура, и я использую Gson
для декодирования, ниже то, что я пытаюсь,
void recursive(String key, HashMap<String, Object> value) {
for (Map.Entry<String, Object> entry: value.entrySet()) {
recurssive(entry.getKey(), (HashMap<String, Object>) entry.getValue());
}
}
HashMap<String, Object> decodedJson = new Gson().fromJson(inputJson, HashMap.class);
recursive("mapping", (HashMap<String, Object>) decodedJson.get("mapping"));
И я получаю приведенную ниже ошибку во время выполнения при первом recursive
вызове функции
javax.servlet.ServletException: java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to java.util.HashMap
Мне еще предстоит попробовать это способом, определенным в Анализировать вложенный JSON с помощью gson с использованием JsonParser
, но любой вход в декодирование приветствуется.