我试图将一个jsonobject中的参数改回json,我试着这样做:
fun edit_json(pos: Int) {
var json: String?
try {
val inputStream: InputStream = assets.open("stempel.json")
//reading stempel.json
json = inputStream.bufferedReader().use { it.readText() }
var jsonarr = JSONArray(json)
var jsonobj = jsonarr.getJSONObject(pos)
jsonobj.put("sammelstatus", 1)
val updatedJsonString = jsonobj.toString()
val outputStream = this.openFileOutput("stempel.json", Context.MODE_PRIVATE)
val writer = OutputStreamWriter(outputStream)
writer.write(updatedJsonString)
writer.close()
} catch (e: IOException) {
}
}
jsonobject被成功地改变了,但是我在将它们推回json时遇到了问题,不知何故,作者没有将它们推回位于我的assets文件夹中的.json。有人知道为什么会这样吗?
聊天gpt给了我多种不同的方式来推动它像这一个
val file = File(context.filesDir, "stempel.json")
val outputStream = FileOutputStream(file)
outputStream.write(updatedJsonString.toByteArray())
outputStream.close()
然而不知何故,这些似乎都不能将更改后的jsonobject推回json中
1条答案
按热度按时间nfeuvbwi1#
在Android中,assets文件夹是只读的,这意味着您不能在运行时直接写入或修改其中的文件。这就是为什么您尝试将更新的JSON对象写回assets文件夹中的文件不起作用的原因。
相反,您应该考虑将文件从assets文件夹复制到内部存储或外部存储目录,您可以在其中进行写访问。然后,您可以修改复制的文件并成功保存更改。