类型不匹配:推断的类型是字符串? 但字符串预计在kotlin
我的主要活动中有以下代码:
var qNa_list = parseQuestions(loadJSONFromAsset("qna_list.json")) fun loadJSONFromAsset(file_name:String): String? { var json: String? = null try { val isis = assets.open(file_name) val size = isis.available() val buffer = ByteArray(size) isis.read(buffer) isis.close() json = String(buffer, "UTF-8") } catch (ex: IOException) { ex.printStackTrace() return null } return json }
当我尝试编译它时,我得到以下错误。
我修复了一些由于可能的错误而导致的其他错误,但是这个错误是我无法解码的。
错误:(127,35)类型不匹配:推断的类型是字符串,但字符集是预期的
我已经改变了某些值为空来适应错误,但是json = String(buffer, "UTF-8")
(UTF-8)总是用红色标出。
根据javadoc, String
构造函数接受Charset
类型的第二个参数, 如下所示 。 你可以使用Charset.forName(String)
静态方法来创建你的Charset
。
这似乎解决了这个问题。
看来我需要指定Charset
类型的对象,而不是像UTF-8
字符串。
第一种方法如@MarošŠeleng所述
Charset.forName("UTF-8")
或者,指定Charset.UTF_8
val charset: Charset = Charsets.UTF_8 json = String(buffer, charset)