我正在努力解决一个我无法正确思考的特定问题。以下是问题
我有一个键值如下的地图,我只是在这里使用了字符串
String key = "activate.message.success"
String value = "success"
String key1 = "activate.title"
String value1 = "Good Title"
String key2 = "activate.message.error"
String value2 = "error"
String key3 = "activate.message.short.poll"
String value3 = "This is short poll"
我需要建立一个像下面这样的json
{
"activate":{
"message":{
"success":"success",
"error":"error",
"short":{
"poll":"This is short poll"
}
},
"title":"Good Title"
}
}
我想不出这个用例的合适解决方案并挣扎了 3 个小时。我想过使用递归,但我不知道我该怎么做。请帮助解决这个问题。我为此使用 java,我应该使用通用 JSONObject 来解决,因为没有 POJO 映射。到目前为止,我刚刚使用分隔符拆分字符串并存储在另一个地图中,如下所示
public Map<String, Object> getJsonObjectFromKeyValueMap(Map<String, String> stringValueMap,
Map<String, Object> stringObjectMap) {
for (Entry entry : stringValueMap.entrySet()) {
String[] keyValueArrayString = entry.getKey().toString().split("\\.");
int sizeOfMap = keyValueArrayString.length;
int i = 0;
String concatString = "";
for (String processKey : keyValueArrayString) {
if (i < sizeOfMap - 1) {
concatString += processKey + ".";
stringObjectMap.put(concatString, (Object) new JSONObject());
} else {
concatString += processKey;
stringObjectMap.put(concatString, entry.getValue());
concatString = "";
}
i++;
}
}
return stringObjectMap;
}