android - 从文件加载时格式错误的 Json

标签 android json malformed

当我从资源中的 .json 文件加载一些模拟数据时,有时返回的数据已损坏并显示 �������������������� 符号。但实际数据没有这些符号。我尝试加载的代码低于为什么会发生这种情况?谢谢

fun loadJSONFromAsset(fileName: String): String? {
        val json: String
        try {
            val `is` = javaClass.classLoader.getResourceAsStream(fileName)

            val size = `is`.available()
            val buffer = ByteArray(size)
            `is`.read(buffer)
            `is`.close()
            json = String(buffer, Charset.defaultCharset())
        } catch (ex: IOException) {
            ex.printStackTrace()
            return null
        }
        return json
    }

最佳答案

未自行压缩的文件将在放入 Assets 文件夹时进行压缩。您必须使用 AssetManager 打开文件

val jsonString = context
    .assets
    .open("myfile.json")
    .bufferedReader()
    .readText()

或在构建时禁用 .json 文件的压缩。

android {
    aaptOptions {
       noCompress 'json'
    }
}

此外,我认为您没有充分的理由使用 classLoader.getResourceAsStream(fileName) 打开 apk 中 bundle 的文件,在 Android 上您可以使用 AssetManager资源。我刚找到这个interesting article ,它表明使用 getResourceAsStream 也可能非常慢。

关于android - 从文件加载时格式错误的 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53774571/

相关文章:

Android应用力RTL

java - 使用 Android eclipse 将值添加到 SQLite 中

java - printf 模板的格式错误字符串问题

Ruby 无法解析 CSV 文件:CSV::MalformedCSVError(第 1 行中的非法引用。)

android - Galaxy Note 上的动画不流畅

android - 取消 AsyncTask

java - 具有嵌套值的 JSON 到 POJO

Android – 是否可以使用非字符串参数制作 Http-Post?

javascript - 从 javascript JSON 对象中查找键的值

java//解压报错:MALFORMED