【发布时间】:2019-05-24 11:57:24
【问题描述】:
我想访问 JSON 对象,但在此过程中出现以下异常:
(begin_object 但是是 begin_array )
这是我的 Json
{ "RequestUserId": "7bb288a4-db12-45af-9e93-5fbb3943aa20", “总计”:1, “总页数”:1, "上一个链接": "", "NextPageLink": "", “数据”: [ { “身份证”:29, “标题”:“能源基金”, “描述”:“Diamerbasha 大坝基金”, “终止”:“收集”, “状态”:“活动”, “金额”:2000, “开始”:空, “结束”:空, "创建日期": "2018-10-28T05:34:13.333", "修改日期": "2018-10-28T05:34:13.333", “媒体”: [], “收藏”: { “金额”:405, “计数”:4 }, “贡献”:0, “团体”: { “身份证”:162, “标题”:“灰度逻辑” }, “用户”:{ "id": "c0985265-04b4-47e5-adc2-b82660912134", “名字”:“伊姆兰”, "姓氏": "Khattak", "头像": "https://marcoapp.blob.core.windows.net/marco/5eb4e50b-b36c-491d-b292-3aa16a445e54.jpg", "封面图片": "https://marcoapp.blob.core.windows.net/marco/bcb1d889-135d-442c-b2c9-7b03dc3639c3.jpg", “协调”: { “纬度”:33.532824, “经度”:73.12971 }, “IsOnline”:假, “LastSeen”:“5 分钟前” } } ] }
这是我解析 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;
}
}
感谢任何帮助。
【问题讨论】:
-
等一下,
onResponse已经给了你一个 JSONObject ,你为什么要把它转换成字符串并试图再次解析成 JSONObject? -
分享您的 CampaignResponse 课程。 CampaignResponse 与您响应的 Json 之间似乎存在不匹配。
-
@ChandraniChatterjee 在我的 CampaignResponse 类上方查看
-
我的 CampaignResponse 类有什么问题吗??
标签: android json android-studio arraylist