【问题标题】:How to count the object inside the JsonArray?如何计算 JsonArray 中的对象?
【发布时间】:2019-03-14 16:53:23
【问题描述】:

Json格式下面是我的输入,我需要根据Object来统计总数

Students:[
        {
        "Student_id": "101"
        "Name": "Jon",
        "Course" : "Engineer"
        },
        {
        "Student_id": "102"
        "Name": "Snow",
        "Course" : "Medical"
        },
        {
        "Student_id": "103"
        "Name": "Walter",
        "Course" : "Chemistry"
        },
        {
        "Student_id": "104"
        "Name": "White",
        "Course" : "Chemistry"
        }
    ]

当我循环 JsonArray 时无法计算总数??它会始终显示计数 1,我想要如下格式的输出

No Of Students: 4
Total Chemistry Students :2

下面的代码我试过了,

            JsonArray Students=Details.getAsJsonArray("Students");

            for(int i=0;i<Students.size();i++)
            {
                JsonObject Std=Students.get(i).getAsJsonObject();
                String SrdID=Std.get("Student_id").getAsString();

                System.out.println("Student Details----"+SrdID);
            }


            String [] Studentarr=new String[] {"Student_id"};
            int Count=Studentarr.length;

            System.out.println("Count ---"+ Count);

任何帮助将不胜感激!提前致谢

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 当我循环 JsonArray 时我无法计算总数??它将始终显示计数 1 -- 共享 显然 执行此操作的代码。另外,您使用的是哪个 json 库?
  • @NicholasK Gson
  • 无论你尝试了什么都显示代码?

标签: java json java-8 gson


【解决方案1】:

鉴于您知道数组中每个元素的结构是相同的,您能否创建一个 Student 类并拥有一个 Student 对象数组?

根据我的经验,操作对象总是比纯 json 更好,但你没有在问题中说这是否是必需的,所以我假设它是。

因此,您可能会发现这个类似问题的答案很有用: how to count length of the JSON array element

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    采用这种结构:

    var object = {"Students":[
        {
        "Student_id": "101",
        "Name": "Jon",
        "Course" : "Engineer"
        },
        {
        "Student_id": "102",
        "Name": "Snow",
        "Course" : "Medical"
        },
        {
        "Student_id": "103",
        "Name": "Walter",
        "Course" : "Chemistry"
        },
        {
        "Student_id": "104",
        "Name": "White",
        "Course" : "Chemistry"
        }]};
    

    现在,我们可以用 JS 试试这个:

    print(object.Students.length) // print total
    print(object.Students.filter(st => st.Course === 'Chemistry').length) // print occurrences
    

    输出是:

    > 4
    > 2
    

    【讨论】:

    • 在 java 中我们不能通过 st => st.Course === 'Chemistry').length 这样的流,因为它不接受 'Chemistry' 它会接受单个字符 'e'
    猜你喜欢
    • 2012-07-16
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 2018-10-06
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    相关资源
    最近更新 更多