私のメインアクティビティには次のコードがあります。
_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
}
_
コンパイルしようとすると、次のエラーが発生します。
Nullableが原因で発生した他のいくつかのエラーを修正しましたが、これは私がデコードできないものです。
エラー:(127、35)タイプの不一致:推定されたタイプはStringですが、Charsetが必要です
エラーに対応するために一部の値をnull可能に変更しましたが、json = String(buffer, "UTF-8")
(UTF-8)には常に赤の下線が引かれています。
これで問題は解決したようです。
UTF-8
のような文字列ではなく、Charset
タイプオブジェクトを指定する必要があるようです。
@MarošŠelengによる最初の方法
Charset.forName("UTF-8")
または、Charset.UTF_8
を指定します
val charset: Charset = Charsets.UTF_8
json = String(buffer, charset)
Javadocによると、String
コンストラクターは、タイプCharset
の2番目の引数を受け入れます ここに示すように 。 Charset.forName(String)
静的メソッドを使用してCharset
を作成できます。