如何解析json数组中的json对象?

时间:2019-03-07 20:37:30

标签: android json rx-android android-json

我对JSON很虚弱,可能有一个愚蠢的问题,并且想知道如何解析放置在JSON数组中的JSON对象。 所以,到目前为止,我有

public Single<Profile> doProfileApiCall() {
        return Rx2AndroidNetworking.post(ApiEndPoint.ENDPOINT_PROFILE)
                .addHeaders(mApiHeader.getProtectedApiHeader())
                .build()
                .getObjectSingle(Profile.class);

要检索我的个人资料参数,但是在端点中,我有:

[{"Name": "this", "Email","that@gmail.com"}]

我将端点设置为:

 public static final String ENDPOINT_PROFILE =
            BuildConfig.BASE_URL
            + "/linktojson"; 

这给了我以上JSON。 但是问题是[],我该如何使用:

 public Single<Profile> doProfileApiCall() {
            return Rx2AndroidNetworking.post(ApiEndPoint.ENDPOINT_PROFILE)
                    .addHeaders(mApiHeader.getProtectedApiHeader())
                    .build()
                    .getObjectSingle(Profile.class);

这样我可以使用具有

的profile.java模型类
public class Profile {
    @Expose
    @SerializedName("Name")
    private String name;
    @Expose
    @SerializedName("Email")
    private String email;
    etc...
}

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

在doProfileApiCall()方法而不是.getObjectSingle中使用

.getJSONArraySingle(ProfileList.class)

现在使用以下代码创建一个新的类ProfileList.java。

List<Profile> profileList = new ArrayList<>();

public List<Profile> getProfileList() {
    return profileList;
}

public void setProfileList(List<Profile> profileList) {
    this.profileList = profileList;
}

将doProfileApiCall方法的返回类型更改为

public Single<ProfileList> doProfileApiCall()

每当您要访问数据时,将其使用列表位置0,以后再获取更多数据时,就可以对数据进行索引。

答案 1 :(得分:0)

通常,如果JSON根对象是array,则应在List侧使用Java。在您的情况下,您有array,请使用相关方法:

return Rx2AndroidNetworking.post(ApiEndPoint.ENDPOINT_PROFILE)
          .addHeaders(mApiHeader.getProtectedApiHeader())
          .build()
          .getObjectListSingle(Profile.class);

Rx2ANRequest来源。