Reputation: 393
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");
}
Upvotes: 0
Views: 228
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
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