如何正确格式化此gson.fromJson调用?

时间:2016-12-15 07:45:26

标签: android arrays json gson

我的数组是一个事件列表,我需要使用我的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类中初始化相同的命名变量,我发现这是因为它们被设置为私有,我试图从我的主活动类中分配它们。我不得不改为公开

1 个答案:

答案 0 :(得分:3)

为什么你需要那个for循环?

您是否尝试过这行代码:

mobileArray = gson.fromJson(br, Event[].class);

尝试立即获取整个数组,而不是一次获取一个对象。

另外,尝试这样做时会出现什么错误?

关于fromJson的问题,答案是肯定的,如果POJO和JSON文件中的变量名称相同,它会自动分配它们。