我的数组是一个事件列表,我需要用我的JSON文件中的信息初始化每个事件。我创建了这个简单的设置基于我在这里找到其他答案使用GSON,但我超级困惑如何gson.fromJSON调用工作如何正确格式化此gson.fromJson调用?
我有3个变量,我想从JSON文件检索事件 - 开始日期,结束日期和摘要。 JSON是否自动将它们从JSON分配给它们在事件中的值?
这是我的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和其他地方的其他方法,但没有一个似乎适合我的情况
编辑:删除我已经为移动阵列与吉尔张贴的循环。重要的是未来的人阅读这条消息 - 从GSON没有初始化我的事件类中相同的命名变量,我发现这是因为他们被设置为私人,我试图从我的主要活动类中分配它们。我不得不改为公开
我不知道你可以把整个数组作为第二个参数。我的IDE没有给我一个错误,我只是不确定fromJSON调用是如何工作的。每个Event对象的dtstart,dtend和summary变量是否会通过简单地调用这行代码从我的JSON文件自动分配? – Johnny
是的,你应该通过mobileArray中的顺序获取所有对象。欢迎来到Gson的力量:) – Gil
太棒了,比我想象的要容易得多。你所称的这条线是否也初始化移动阵列?即如果我的JSON文件中有17件事情,那么mobileArray中会自动生成17个事件? – Johnny