Im все еще не уверен (в комментариях к вопросу), что исходная строка правильно отформатирована. Я думаю, что некоторые символы перемещаются, когда вы заменяете значения фиктивными данными. Я не думаю, что есть логический переход от исходной строки в строку сериализованного
Взгляни на этой
final String opString = "type=event&groups%5B%5D=a&groups%5B%5D=b&details%5Bclient_time%5D=Sat+Jan+30+2016+18%3A38%3A57+GMT-0500+(EST)";
System.out.println(URLDecoder.decode(opString, "UTF-8"));
, который выводит
type=event&groups[]=a&groups[]=b&details[client_time]=Sat Jan 30 2016 18:38:57 GMT-0500 (EST)
Где моя интерпретация вашей строки
final String myString = "type%3Devent%26groups%3D%5B%27a%27%2C%27b%27%5D%26details%5Bclient_time%5D=Sat+Jan+30+2016+18%3A38%3A57+GMT-0500+(EST)";
System.out.println(URLDecoder.decode(myString, "UTF-8"));
выход которого
type=event&groups=['a','b']&details[client_time]=Sat Jan 30 2016 18:38:57 GMT-0500 (EST)
я могу логически работать с этим, чтобы произвести строку, которую вы хотите
final String myStringDecoded = URLDecoder.decode(myString, "UTF-8");
System.out.println(myStringDecoded);
// Then we can break it down to its parts
// The & is used to operate values
String[] parts = myStringDecoded.split("&");
JsonObject json = new JsonObject();
for(String part: parts){
String[] keyVal = part.split("="); // The equal separates key and values
json.addProperty(keyVal[0], keyVal[1]);
}
System.out.println(json);
, что приводит к
{"type":"event","groups":"['a','b']","details[client_time]":"Sat Jan 30 2016 18:38:57 GMT-0500 (EST)"}
я могу улучшить этот ответ, чтобы сделать это именно то, что вы хотите, если мой предположения верны
Эта строка преобразуется в это 'type = event & groups [] = a & groups [] = b & details [client_time] = Сб 30 января 2016 18:38:57 GMT-0500 (EST)' Это правильно? Потому что я думаю, что это должно быть: 'type% 3Devent% 26groups% 3D% 5B% 27a% 27% 2C% 27b% 27% 5D% 26 + details% 3Dclient_time% 3D% 27Sat + Jan + 30 + 2016 + 18 % 3A38% 3A57 + GMT-0500 +% 28EST% 29% 27 ' – Cripto
Нет, правильная сериализация JSON этого значения представлена в ответе после того, как« должен произвести: » – ghostrider00
Я понимаю, что последовательная версия после правильной. Я спрашиваю, является ли исходная строка правильной. Потому что 'groups% 5B% 5D = a' приводит к' groups [] = a' ... – Cripto