开发者社区> 问答> 正文

在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"}
]

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

问题来源:Stack Overflow

展开
收起
montos 2020-03-22 11:34:15 1150 0
2 条回答
写回答
取消 提交回答
  • 有点尴尬唉 你要寻找的东西已经被吃掉啦!

    可以参考:https://help.aliyun.com/document_detail/109858.html?spm=a2c4g.11186623.6.626.13cf7aaebUvMd1

    2020-03-25 22:29:29
    赞同 展开评论 打赏
  • Gson为该fromJson方法提供了很多重载,这是它们的签名:

    fromJson重载

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

    因此,替换此行:

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

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

    而且您应该很好。

    回答来源:Stack Overflow

    2020-03-22 11:35:18
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载