代码之家  ›  专栏  ›  技术社区  ›  Johnny

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

  •  0
  • Johnny  · 技术社区  · 9 年前

    我的数组是一个事件列表,我需要使用JSON文件中的信息初始化每个事件。我创建这个简单的设置是基于我在使用GSON的其他答案中发现的,但我对GSON是如何工作的非常困惑。fromJSON调用有效

    如果我想从JSON文件中检索,我有3个变量-开始日期、结束日期和摘要。fromJSON是否自动将它们从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和其他地方尝试了很多其他方法,但似乎都不适合我的情况

    编辑:删除了我在mobileArray上的循环,并在Gil发布了一行。对未来阅读此消息的人很重要-fromGSON没有初始化事件类中的相同命名变量,我发现这是因为它们被设置为私有,我试图从主活动类中分配它们。我不得不改成公众人物

    1 回复  |  直到 9 年前
        1
  •  3
  •   Gilad Eshkoli    9 年前

    为什么循环需要这个?

    您是否尝试了这行代码:

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

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

    此外,您在尝试这样做时会遇到什么错误?

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