package com.smallhacker.disbrowser.util import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.readValue import java.nio.file.Path val jsonMapper: ObjectMapper by lazy { jacksonObjectMapper() } interface JsonFile { fun load(): T fun save(value: T) } inline fun jsonFile(path: Path): JsonFile { return object : JsonFile { override fun load() = jsonMapper.readValue(path.toFile()) override fun save(value: T) = jsonMapper.writeValue(path.toFile(), value) } }