Итак, у меня есть Map<Vector3i,String>
, который я хочу сохранить, проблема в том, что мне нужны только значения x, z, поэтому результат должен выглядеть примерно так:Gson: Измените способ создания карт-ключей
{
"1,2": "test"
"13,5": "test"
"9,4": "test"
}
Это мой JsonSerializer<Vector3i>
:
public class Vector3iAdapter implements JsonSerializer<Vector3i> {
@Override
public JsonElement serialize(Vector3i src, Type typeOfSrc, JsonSerializationContext context) {
return new JsonPrimitive(src.getX()+","+ src.getZ());
}
}
Но это то, что выглядит как выход:
{
"(1, 0, 2)": "test"
"(13, 0, 5)": "test"
"(9, 0, 4)": "test"
}
Поскольку сериализация Vector3i
, которая не работает как ключ в Map
, работает по назначению, я спрашиваю, почему она ведет себя по-другому и как я это исправит.
Спасибо :) Я 'm уже также десериализует Вектор, но я не включил его в пример. Кроме того: «enableComplexMapKeySerialization()« снижает производительность в некотором роде? Если это так, я бы использовал его, только если это необходимо. – MyNameIsHans
К сожалению, я понятия не имею о влиянии производительности. Я предполагаю, что будет какое-то влияние *, но я думаю, что вам нужно будет измерить это влияние, чтобы принять взвешенное решение ... –