我想使用GSON解码键不是字符串的映射数组。我知道JSON类型不允许将对象用作键,所以我希望可以让GSON递归地解码字符串。
Java
public class Reader {
static class Key {
int a;
int b;
}
static class Data {
HashMap<Key, Integer> map;
}
public static void read() {
Gson gson = new Gson();
String x = "[{\"map\": { \"{\\\"a\\\": 0, \\\"b\\\": 0}\": 1 }}]";
Data[] y = gson.fromJson(x, Data[].class);
}
}
JSON示例
[
{
"map": {
"{\"a\": 0, \"b\": 0}": 1
}
}
]
我在这里想要实现的是,字符串"{\"a\": 0, \"b\": 0}"
由GSON解码为Key
类型的对象,并且两个成员都设置为0。然后,该对象可用于填充删除Data类的HashMap。
这有可能实现吗?
答案 0 :(得分:0)
您可以使用自定义df %>%
separate_rows(phrase,sep = " and ") %>%
group_by(item) %>%
summarise(Last = last(phrase))
实现此目的。使用自定义反序列化器,您可以决定如何对此类JsonDeserializer
进行反序列化。在下面的内联示例中实现它:
Key
向public JsonDeserializer<Key> keyDs = new JsonDeserializer<Key>() {
private final Gson gson = new Gson();
@Override
public Key deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context)
throws JsonParseException {
// This will be valid JSON
String keyJson = json.getAsString();
// use another Gson to parse it,
// otherwise you will have infinite recursion
Key key = gson.fromJson(keyJson, Key.class);
return key;
}
};
注册,创建GsonBuilder
并反序列化:
Gson