You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android内部存储中如何用Kotlin向JSON数组文件追加JSON对象

Android内部存储JSON文件追加对象的正确实现

直接用MODE_APPEND向JSON文件追加字符串会破坏数组结构——它只是把新内容直接拼在文件末尾,导致最终出现[]{"item1":...}这种无效JSON格式。正确的做法是先读取并解析现有JSON数组,添加新对象后再整体写入文件。

实现步骤

  1. 检查目标文件是否存在,读取现有内容并解析为JSONArray
  2. 将新的JSONObject添加到数组中
  3. 将更新后的JSONArray写入文件(覆盖原文件以保证格式合法)

完整Kotlin代码

import org.json.JSONArray
import org.json.JSONObject
import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream

// 向内部存储的JSON文件追加对象
fun appendToJsonFile(fileName: String, newObj: JSONObject) {
    val targetFile = File(filesDir, fileName)
    
    // 初始化或读取现有JSON数组
    val jsonArray = when {
        targetFile.exists() && targetFile.length() > 0 -> {
            val inputStream = FileInputStream(targetFile)
            val fileContent = inputStream.bufferedReader().use { it.readText() }
            inputStream.close()
            JSONArray(fileContent)
        }
        else -> JSONArray() // 文件不存在或为空时创建空数组
    }
    
    // 添加新对象到数组
    jsonArray.put(newObj)
    
    // 写入更新后的JSON数组(带缩进格式化,方便查看)
    val outputStream = FileOutputStream(targetFile)
    outputStream.write(jsonArray.toString(2).toByteArray())
    outputStream.close()
}

使用示例

// 创建要追加的JSON对象
val newNote = JSONObject().apply {
    put("item1", "value1")
    put("item2", "value2")
    put("item3", "value3")
}

// 追加到notes.txt文件(注意文件名要和创建时一致)
appendToJsonFile("notes.txt", newNote)

关键注意点

  • 文件名统一:你之前创建文件用的是notes.txt,追加时误写为jsonfile.json,这会导致找不到原文件,必须保持文件名一致
  • 避免手动拼接JSON:依赖JSONArray和JSONObject类处理结构,杜绝手动拼接字符串引发的格式错误
  • 格式化输出:JSONArray.toString(2)会生成带缩进的JSON内容,便于调试和查看

内容的提问来源于stack exchange,提问作者BinaryVigilante

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 06:01:03