mesopotamia
mesopotamia

Reputation: 393

How to parse objects in json?

I am trying to parse a json but it give me error java lang.string can not be converted to jsonArray. Here is my json and error :

Value {"MemberList":[{"MemberId":1,"FirmId":1,"MemberTypeId":1,
"MemberUserName":"[email protected]",      "MemberName":"sth","UpdateDate":"\/Date(1421840040000)\/",
"LastLoginDate":"\/Date(1454995980000)\/",
"FirmTypeId":1,"FirmName":"Firm","FirmOfficialName":"Firm",
"FirmRowGuid":"sth","MemberRowGuid":"sth","AuthToken":"sth",
"IsRegistered":1}],"MemberPageList":null,"FirmModuleList":null,"Status":true,
"StatusCode":"OK"} of type java.lang.String cannot be converted to JSONArray

When i deleted MemberList header and run manually it works fine but i must parse it with header how should i parse it. userDetail is my json string:

JSONArray jsonArray = new JSONArray(userDetail);
                    member = new Member();
                    for (int i = 0; i < jsonArray.length(); i++) {

                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    member.MemberId = jsonObject.optInt("MemberId");
                    member.MemberTypeId = jsonObject.optInt("MemberTypeId");
                    member.FirmTypeId = jsonObject.optInt("FirmTypeId");
                    member.IsRegistered = jsonObject.optInt("IsRegistered");

                    member.MemberUserName = jsonObject.optString("MemberUserName");
                    member.MemberName = jsonObject.optString("MemberName");
                    member.UpdateDate = jsonObject.optString("UpdateDate");
                    member.LastLoginDate = jsonObject.optString("LastLoginDate");
                    member.FirmName = jsonObject.optString("FirmName");
                    member.FirmOfficialName = jsonObject.optString("FirmOfficialName");
                    member.FirmRowGuid = jsonObject.optString("FirmRowGuid");
                    member.MemberRowGuid = jsonObject.optString("MemberRowGuid");
                    member.AuthToken = jsonObject.optString("AuthToken");
                }

Here is complete code but still not works

Upvotes: 0

Views: 228

Answers (2)

Madhur
Madhur

Reputation: 3353

Its a json object not array so change,

JSONArray jsonArray = new JSONArray(userDetail);

to

JSONObject jsonObj= new JSONObject(userDetail);
JSONArray jsonArray = jsonObj.getJSONArray("MemberList");

To manually check json use this http://jsoneditoronline.org/

CODE:

    JSONObject jsonObj= new JSONObject(userDetail);
    JSONArray jsonArray = jsonObj.getJSONArray("MemberList");

                    for (int i = 0; i < jsonArray.length(); i++) {
                    member = new Member();
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    member.MemberId = jsonObject.optInt("MemberId");
                    member.MemberTypeId = jsonObject.optInt("MemberTypeId");
                    member.FirmTypeId = jsonObject.optInt("FirmTypeId");
                    member.IsRegistered = jsonObject.optInt("IsRegistered");

                    member.MemberUserName = jsonObject.optString("MemberUserName");
                    member.MemberName = jsonObject.optString("MemberName");
                    member.UpdateDate = jsonObject.optString("UpdateDate");
                    member.LastLoginDate = jsonObject.optString("LastLoginDate");
                    member.FirmName = jsonObject.optString("FirmName");
                    member.FirmOfficialName = jsonObject.optString("FirmOfficialName");
                    member.FirmRowGuid = jsonObject.optString("FirmRowGuid");
                    member.MemberRowGuid = jsonObject.optString("MemberRowGuid");
                    member.AuthToken = jsonObject.optString("AuthToken");
                }

Upvotes: 4

Pratik
Pratik

Reputation: 456

{
"MemberList": [{
    "MemberId": 1,
    "FirmId": 1,
    "MemberTypeId": 1,
    "MemberUserName": "[email protected]",
    "MemberName": "sth",
    "UpdateDate": "\/Date(1421840040000)\/",
    "LastLoginDate": "\/Date(1454995980000)\/",
    "FirmTypeId": 1,
    "FirmName": "Firm",
    "FirmOfficialName": "Firm",
    "FirmRowGuid": "sth",
    "MemberRowGuid": "sth",
    "AuthToken": "sth",
    "IsRegistered": 1
}],
"MemberPageList": null,
"FirmModuleList": null,
"Status": true,
"StatusCode": "OK"

}

as you can see the top root data we are getting as an object, within this object we are getting array of "MemberList", so you need to get object first then array inside of it.

and also do this to convert response in to String

HttpResponse response=client.execute(post);
String obj= EntityUtils.toString(response.getEntity());

then use it as you want.

Hope you got this.

Upvotes: 0

Related Questions