如何动态地从JSON文件获取数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何动态地从JSON文件获取数据相关的知识,希望对你有一定的参考价值。

所以我制作了这个迷你应用程序是为了学习JSON

所以基本上这是JSON文件

{
  "Student1" : {
    "name" : "Amine" ,
    "mark": 19,
    "Groupe": "G25"
  },
  "Student2" : {
    "name" : "Zaki" ,
    "mark": 19,
    "groupe": "G25",
  }

}

我试着不放“ Student1”,我认为我可以做类似“ Student” +“ 1”的事情

  private void parseJson(String toString) {

        TextView showView = new TextView(this);

        theLayout.addView(showView);

        StringBuilder builder = new StringBuilder();

        try {
            JSONObject root = new JSONObject(toString);

 /////// Here i got the INPUT string from an EditText 
///// i think i should use some thing like .equals() 

             String theWantedStudent = "Student"+INPUT ;

            JSONObject student = root.getJSONObject(theWantedStudent);



            builder.append("Name : ")
                    .append(student.getString("name")).append("
");
            builder.append("Groupe : ")
                    .append(student.getString("groupe")).append("
");
            builder.append("Mark : ")
                    .append(student.getInt("mark")).append("
");

        } catch (JSONException e) {
            e.printStackTrace();
        }


        showView.setText(builder.toString());

    }

如果有更简单的方法,请告诉我谢谢

答案

我建议使用Gson将JSON解析为一个对象。之后,将更容易处理数据。

https://mkyong.com/java/how-to-parse-json-with-gson/

另一答案

我认为您想要的是学生反对的清单:

[
  {
    "name" : "Amine" ,
    "mark": 19,
    "groupe": "G25"
  },
  {
    "name" : "Zaki" ,
    "mark": 19,
    "groupe": "G25"
  }
]

然后使用一个类,例如:

public class Student {
    @JsonProperty("name")
    private String name;
    @JsonProperty("mark")
    private Integer mark;
    @JsonProperty("groupe")
    private String groupe;

    //getters and setters    
}

然后使用杰克逊遍历列表

以上是关于如何动态地从JSON文件获取数据的主要内容,如果未能解决你的问题,请参考以下文章

如何多次使用同一个片段?

如何从片段中的 JSON 响应中的对象获取数据

如何在 jsp 和 ajax 中为两个选择选项框动态地从 mysql 获取和填充值到 HTML 选择选项

如何使用下面的类从web服务中动态读取下面给出的JSON数据,并为收到的数据创建水平列表视图。

如何在 Unity 中正确地从 Json 获取数组数组

有没有办法使用相同的布局动态创建片段并向它们显示数据?