类型不匹配:推断类型是String,但是在kotlin中预计会出现Charset

时间:2017-11-09 09:45:56

标签: android json string kotlin

我的主要活动中有以下代码:

body:after

当我尝试编译它时,我收到以下错误。

我修正了由于nullables引起的其他一些错误,但这个是我无法解码的。

错误:(127,35)类型不匹配:推断类型为String但预期是Charset

我已将一些值更改为可为空以容纳错误,但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 } (UTF-8)始终以红色加下划线。

2 个答案:

答案 0 :(得分:17)

这似乎解决了这个问题。

似乎我需要指定Charset类型对象,而不是像UTF-8这样的字符串。

@MarošŠeleng提到的第一种方法

Charset.forName("UTF-8")

或者,指定Charset.UTF_8

val charset: Charset = Charsets.UTF_8

json = String(buffer, charset)

答案 1 :(得分:2)

根据javadoc,String contructor接受Charset as seen here类型的第二个参数。您可以使用Charset.forName(String)静态方法创建Charset