Как мне преобразовать этот List<Any>
в текстовый / json файл и затем прочитать его? Поскольку этот вопрос и ответ на часто задаваемые вопросы будут жестко закодированы, поэтому я не хочу, чтобы он был установлен непосредственно внутри моего фрагмента. Я планирую поместить информацию в файл активов, а затем прочитать ее оттуда, чтобы сгенерировать List
My List<Any>
val list: List<Any> = arrayListOf(
"General",
FAQ(faqQuestion = "ABC?", faqAnswer = "QWERTY", expanded = false),
FAQ(faqQuestion = "DEF?", faqAnswer = "ZXCVBN", expanded = false),
"Troubleshooting",
FAQ(faqQuestion = "ZXC?", faqAnswer = "POIUYT", expanded = false)
)
Я не знаю, как конвертировать это в JSON
или текстовый файл и успешно экспортировать его в этот List
.
До сих пор я пробовал:
faq.json
[
"General",
{
"expanded":false,
"faqQuestion":"ABC?",
"faqAnswer":"QWERTY"
},
{
"expanded":false,
"faqQuestion":"DEF?",
"faqAnswer":"ZXCVBN"
}
]
Текстовый файл faq.txt
"General",
FAQ(faqQuestion = "ABC?", faqAnswer = "QWERTY", expanded = false),
FAQ(faqQuestion = "DEF?", faqAnswer = "ZXCVBN", expanded = false),
"Troubleshooting",
FAQ(faqQuestion = "ZXC?", faqAnswer = "POIUYT", expanded = false)
Код для получения активов: Текст
fun loadFromAsset(fileName: String, context: Context): Any? {
val any: Any
try {
val ins = context.getAssets().open(fileName)
val size = ins.available()
val buffer = ByteArray(size)
ins.read(buffer)
ins.close()
any = String(buffer, Charset.forName("UTF-8"))
} catch (ex: IOException) {
ex.printStackTrace()
return null
}
return any
}
var list: List<Any>?
loadFromAsset("faq.txt", requireContext())?.let {
list = arrayListOf(it)
}
JSON
fun loadFromAsset(fileName: String, context: Context): String? {
var json: String? = null
try {
val ins = context.getAssets().open(filename)
val size = ins.available()
val buffer = ByteArray(size)
ins.read(buffer)
ins.close()
json = String(buffer, Charset.forName("UTF-8"))
} catch (ex: IOException) {
ex.printStackTrace()
return null
}
return json
}
val list: List<Any> = Gson().fromJson(loadFromAsset("faq.json", requireContext()), Array<Any>::class.java).asList()
Оба способа не могут быть получены в соответствии с оригиналом List<Any>