【问题标题】:Malformed Json while load from file从文件加载时格式错误的 Json
【发布时间】:2018-12-14 06:33:19
【问题描述】:

当我从资源中的 .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
    }

【问题讨论】:

  • 显示你的模拟数据

标签: android json malformed


【解决方案1】:

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

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

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

android {
    aaptOptions {
       noCompress 'json'
    }
}

此外,我认为您没有充分的理由使用classLoader.getResourceAsStream(fileName) 打开捆绑在apk 中的文件,在Android 上您可以使用AssetManagerResources。刚找到这个interesting article,说明使用getResourceAsStream也可以很慢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 2016-02-04
    • 1970-01-01
    相关资源
    最近更新 更多