首页 > 解决方案 > 在 Android Studio 中使用 GSON 从文件中读取 JSON

问题描述

我正在尝试将 JSON 从内部存储文件读取到对象列表中。

我读取文件的代码GSON是:

fis = openFileInput(filename);

BufferedReader reader = new BufferedReader(new InputStreamReader(fis));

StringBuilder data = new StringBuilder();
String line = null;

line = reader.readLine();

while (line != null)
{
     data.append(line).append("\n");
}

data.toString();

reader.close();
fis.close();

Type walletListType = new TypeToken<ArrayList<WalletClass>>(){}.getType();
walletList.add(new Gson().fromJson(data, walletListType));

但是,我收到了错误

无法解析方法 fromJson('java.lang.stringBuilder, java.lang.reflect.Type')

我要加载的 JSON 是(它在方括号内,因为我已经从对象列表中对其进行了序列化):

[
   {"balance":258,"walletName":"wallet 1"},
   {"balance":5222,"walletName":"wallet 2"},
   {"balance":1,"walletName":"wallet 3"}
]

我知道一个常见的解决方法是将导入代码从 更改orgcom,但是我已经确定它是com

标签: javaandroidjsonandroid-studiogson

解决方案


Gson 为该fromJson方法提供了很多重载,这里是它们的签名:

fromJson 重载

但正如您所看到的,它们都没有将StringBuilder作为第一个参数。这就是编译器所抱怨的。相反,您有将 String 作为第一个参数的构造函数。

所以替换这一行:

walletList.add(new Gson().fromJson(data, walletListType));

和:

walletList.add(new Gson().fromJson(data.toString(), walletListType));

你应该很高兴。


推荐阅读