Я хочу получить доступ к объекту JSON, но он дает мне следующее исключение в процессе:
(begin_object, но было begin_array)
Это мой Json
{"RequestUserId": "7bb288a4-db12-45af-9e93-5fbb3943aa20", "Всего": 1, "Всего страниц": 1, "PreviousLink": "", "NextPageLink": "","Данные": [{"Id": 29, "Заголовок": "Энергетический фонд", "Описание": "Фонд плотины Диамербаша", "Завершение": "Сбор", "Статус": "Актив", "Сумма": 2000, «Начало»: ноль, «Конец»: ноль, «Дата создания»: «2018-10-28Т05: 34: 13.333», «Дата изменения»: «2018-10-28Т05: 34: 13.333», «Носитель»: [], "collection": {"Amount": 405, "Count": 4}, "contrib": 0, "group": {"Id": 162, "Title": "Logic Greyscale Logic"}, "Пользователь ": {" Id ":" c0985265-04b4-47e5-adc2-b82660912134 "," FirstName ":" Imran "," LastName ":" Khattak "," ProfilePicture ":" https://marcoapp.blob.core.windows.net/marco/5eb4e50b-b36c-491d-b292-3aa16a445e54.jpg", "CoverPicture": "https://marcoapp.blob.core.windows.net/marco/bcb1d889-135d-442c-b2c9-7b03dc3639c3.jpg"," Координата ": {" Широта ": 33.532824," Долгота ": 73.12971}," IsOnline ": false," LastSeen ":" 5 минут назад "}}]}
Вот мой блок CODE для анализа JSON:
if (! CommonFunctions.isNetworkAvailable ()) {
Toast.makeText (getContext (), "Network Not Available", Toast.LENGTH_SHORT).show ();
return;
}
JsonObjectRequest req = new JsonObjectRequest (Request.Method.GET, WebServicesConstants.GET_GROUP_POSTS + groupId + "/campaigns",
null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response)
{
String sJson = response.toString();
JsonParser parser = new JsonParser();
JsonObject responseData = parser.parse(sJson).getAsJsonObject();
Gson gSon = new Gson();
CampaignResponse campaignResponse = new CampaignResponse ();
try {
campaignResponse = gSon.fromJson(responseData, CampaignResponse.class);
}catch (Exception e)
{
Toast.makeText(getContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
}
if(campaignResponse.getCampaignDataResponses()!=null)
{
for (int i=0; i<campaignResponse.campaignDataResponses.size(); i++)
{
CampaignDataResponse campaignDataResponse = campaignResponse.campaignDataResponses.get (i);
// feedList.clear();
campaignDataResponses.add (campaignDataResponse);
}
}
if (campaignDataResponses.size () > 0) {
CampaingsAddapter adapter = new CampaingsAddapter(getContext(), campaignDataResponses);
CampaignListView.setAdapter(adapter);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error)
{
}
})
{
@Override
public Map<String,String> getHeaders()
{
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json; charset=utf-8");
headers.put("Authorization","Bearer " + CommonFunctions.GetUserToken ());
return headers;
}
};
req.setRetryPolicy(new DefaultRetryPolicy(0, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
MarcoAppController.getInstance().getcRequestQueue().add(req);
Here is my CampaignResponse Class
открытый класс CampaignResponse {
@SerializedName ("RequestUserId")
public String requestedUserId;
@SerializedName ("Total")
public String total;
@SerializedName ("TotalPages")
public String totalPages;
@SerializedName ("PreviousLink")
public String previousLink;
@SerializedName ("NextPageLink")
public String nextPageLink;
@SerializedName ("Data")
public ArrayList<CampaignDataResponse> campaignDataResponses;
public String getRequestedUserId () {
return requestedUserId;
}
public void setRequestedUserId (String requestedUserId) {
this.requestedUserId = requestedUserId;
}
public String getTotal () {
return total;
}
public void setTotal (String total) {
this.total = total;
}
public String getTotalPages () {
return totalPages;
}
public void setTotalPages (String totalPages) {
this.totalPages = totalPages;
}
public String getPreviousLink () {
return previousLink;
}
public void setPreviousLink (String previousLink) {
this.previousLink = previousLink;
}
public String getNextPageLink () {
return nextPageLink;
}
public void setNextPageLink (String nextPageLink) {
this.nextPageLink = nextPageLink;
}
public ArrayList<CampaignDataResponse> getCampaignDataResponses() {
return campaignDataResponses;
}
public void setCampaignDataResponses(ArrayList<CampaignDataResponse> campaignDataResponses) {
this.campaignDataResponses = campaignDataResponses;
}
}
Любая помощь приветствуется.