下面列出了org.bukkit.configuration.serialization.ConfigurationSerializable#serialize ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
static void marshalSerializeable(Element baseElement, ConfigurationSerializable serializeable) {
Map<String, Object> serialized = serializeable.serialize();
if (serializeable instanceof ItemMeta) {
baseElement.addAttribute("itemmeta", String.valueOf(true));
}
for (Entry<String, Object> entry : serialized.entrySet()) {
Element entryElement = baseElement.addElement(entry.getKey());
Object value = entry.getValue();
if (value instanceof ItemMeta) {
marshalSerializeable(entryElement, (ItemMeta) value);
} else {
serializeObject(value, entryElement);
}
}
}
@Override
public void write(JsonWriter out, ConfigurationSerializable value) {
if (value == null) {
this.gson.toJson(null, RAW_OUTPUT_TYPE, out);
return;
}
Map<String, Object> serialized = value.serialize();
Map<String, Object> map = new LinkedHashMap<>(serialized.size() + 1);
map.put(ConfigurationSerialization.SERIALIZED_TYPE_KEY, ConfigurationSerialization.getAlias(value.getClass()));
map.putAll(serialized);
this.gson.toJson(map, RAW_OUTPUT_TYPE, out);
}
@Override
public void serialize(TypeToken<?> type, ConfigurationSerializable from, ConfigurationNode to) throws ObjectMappingException {
Map<String, Object> serialized = from.serialize();
Map<String, Object> map = new LinkedHashMap<>(serialized.size() + 1);
map.put(ConfigurationSerialization.SERIALIZED_TYPE_KEY, ConfigurationSerialization.getAlias(from.getClass()));
map.putAll(serialized);
to.setValue(map);
}