我的数组是一个事件列表,我需要使用我的JSON文件中的信息初始化每个事件。我使用GSON基于我在其他答案中找到的内容创建了这个简单的设置,但我对gson.fromJSON调用的工作方式非常困惑
我在事件中有3个变量,我想从JSON文件中检索 - 开始日期,结束日期和摘要。 fromJSON会自动将它们从JSON分配给它们在Event中的值吗?
这是我的json文件的样子:
[
{
"dtstart": "10/31/2015",
"dtend": "10/31/2015",
"summary": "Halloween"
},
.....
]
这些事件中还有大约六个。
这是我的主要java文件中的代码:
public class MainActivity extends AppCompatActivity {
Event[] mobileArray;
Gson gson = new Gson();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("academiccalendar.json"));
} catch (FileNotFoundException e){
e.printStackTrace();
}
mobileArray = gson.fromJson(br, Event[].class);
这是我的活动课程:
public class Event {
private String dtsart;
private String dtend;
private String summary;
我知道这必须让我看起来像个傻瓜。但我无法理解如何将该JSON文件转换为一系列事件。有人可以指点我正确的方向吗?我已经在StackOverflow和其他地方尝试了很多其他方法,但似乎没有适合我的情况
编辑:删除了我用于mobileArray的循环,其中包含Gil发布的行。对于未来阅读此消息的人来说非常重要 - 来自GSON并没有在我的Event类中初始化相同的命名变量,我发现这是因为它们被设置为私有,我试图从我的主活动类中分配它们。我不得不改为公开
答案 0 :(得分:3)
为什么你需要那个for循环?
您是否尝试过这行代码:
mobileArray = gson.fromJson(br, Event[].class);
尝试立即获取整个数组,而不是一次获取一个对象。
另外,尝试这样做时会出现什么错误?
关于fromJson的问题,答案是肯定的,如果POJO和JSON文件中的变量名称相同,它会自动分配它们。