将更改推送到.json

ijxebb2r  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(154)

我试图将一个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中

nfeuvbwi

nfeuvbwi1#

在Android中,assets文件夹是只读的,这意味着您不能在运行时直接写入或修改其中的文件。这就是为什么您尝试将更新的JSON对象写回assets文件夹中的文件不起作用的原因。
相反,您应该考虑将文件从assets文件夹复制到内部存储或外部存储目录,您可以在其中进行写访问。然后,您可以修改复制的文件并成功保存更改。

相关问题