1

我正在尝试解析如下所示的 json 数据。我通过遵循此过程得到了其他 Json 响应的输出,但为此我无法获取数据。

{
"totalResults": 7,
"startIndex": 1,
"hasMoreResults": false,
"itemsPerPage": 10,
"results": [
    {
        "offering_temp_id": {
            "displayName": "Cool Course",
            "id": "cours000000000004841",
            "course_no": "00006081",
            "version": null
        },
        "delivery_id": {
            "displayName": "Instructor-Led",
            "id": "eqcat000000000000004"
        },
        "student_id": {
            "id": "emplo000000006156648",
            "displayName": "Venkat Rao",
            "person_no": "VRAO"
        },
        "reg_no": "00008341",
        "wlist_on": "2017-08-17T08:59:39.843-0400",
        "wlist_priority": 5,
        "Max_Count": null,
        "Current_Count": null,
        "is_no_show": false,
        "is_walk_in": false,
        "offering_action_id": {
            "id": "ofapr000000000013441",
            "displayName": "00009081"
        },
        "class_id": {
            "id": "class000000000006981",
            "displayName": "Cool Course"
        },
        "elements_to_complete": 0,
        "status": "100",
        "id": "regdw000000000012581"
    },
    // total 7 fields
],
"facets": []

}

我使用解析器过程如下

public class EnrollmentParser {
public ArrayList<EnrollmentData> getData(String respnose)//EnrollmentData is my pojo class contains 4 strings and its getters and setters
{
    ArrayList<EnrollmentData> dataList = new ArrayList<>();
    try {
        JSONObject mainObj = new JSONObject(respnose);
        JSONArray array = mainObj.getJSONArray("results");
        for(int i = 0;i<array.length();i++)
        {
            EnrollmentData data = new EnrollmentData();
            JSONObject resObj = array.getJSONObject(i);
            data.setReg_num(resObj.getString("reg_no"));
            data.setElements_to_complete(resObj.getString("elements_to_complete"));
            data.setW_list_on(resObj.getString("wlist_on"));
            data.setW_list_priority(resObj.getString("wlist_priority"));
            dataList.add(data);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }


    return dataList;
}

}

当我试图显示从上述方法返回的数据列表时,我没有得到任何数据,我得到了类似的响应

这是从方法返回的 dataList 的 toast 响应

向我建议获得响应所需的任何更改

4

2 回答 2

2

没有错误的解析代码,一切都很好(虽然更好用optString)。

默认情况下,toString 函数将返回类型 '@' 引用值,因此

您需要toString在类中覆盖以查看对象EnrollmentData内部的实际内容EnrollmentData

您还可以使用将列表对象收集为单个字符串

String str = Arrays.toString(yourList.toArray());

如何在 Java 中打印出 List 的所有元素?

于 2017-08-17T14:59:01.900 回答
0

为什么不使用 Gson 轻松将 json 转换为对象,而不是获取字段并一一设置呢?

您可以查看 https://github.com/google/gson

于 2017-08-17T15:15:57.023 回答