我有一个关于使用 Gson 或 Jackson 将 JSON 字符串展平为 Map 的增强问题。
我的场景包含重复的键,因此上述问题中的解决方案会导致一些重复的键被覆盖。所以我正在考虑通过将每个级别的密钥组合在一起来构造密钥。
那么如何实现呢?
例如:
{
"id" : "123",
"name" : "Tom",
"class" : {
"subject" : "Math",
"teacher" : "Jack"
}
}
Run Code Online (Sandbox Code Playgroud)
我想获取地图:
"id" : "123",
"name" : "Tom",
"class.subject" : "Math",
"class.teacher" : "Jack"
Run Code Online (Sandbox Code Playgroud)
**********************更新解决方案************************ **************
根据@Manos Nikolaidis的回答,我能够通过考虑ArrayNode来实现以下解决方案。
public void processJsonString(String jsonString) throws Exception {
ObjectMapper mapper = new ObjectMapper();
ArrayNode arrayNode = (ArrayNode) mapper.readTree(jsonString);
processArrayNode(arrayNode);
}
private void processObjectNode(JsonNode jsonNode) {
Map<String, String> result = new HashMap<>();
Iterator<Map.Entry<String, …Run Code Online (Sandbox Code Playgroud)