我想访问JSON对象,但是在处理过程中它给了我以下异常:
(开始是对象,但是begin_array)
这是我的杰森
{ “ RequestUserId”:“ 7bb288a4-db12-45af-9e93-5fbb3943aa20”, “总计”:1, “ TotalPages”:1, “ PreviousLink”:“”, “ NextPageLink”:“”, “数据”:[ { “编号”:29, “标题”:“能源基金”, “描述”:“ Diamerbasha大坝基金”, “终止”:“集合”, “状态”:“有效”, “金额”:2000, “开始”:null, “结束”:null, “ CreatedDate”:“ 2018-10-28T05:34:13.333”, “ ModifiedDate”:“ 2018-10-28T05:34:13.333”, “媒体”:[], “收藏”:{ “金额”:405, “计数”:4 }, “贡献”:0, “组”:{ “ Id”:162, “标题”:“灰度逻辑” }, “用户”:{ “ 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”:否, “ 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;
}
}
感谢您的帮助。
答案 0 :(得分:0)
try
{
String tp = response.getString("TotalPages");
JSONArray data = response.getJSONArray("data");
JSONObject somedata = response.getJSONArray("data").getJSONObject(0);
}
catch (JSONException e)
{
e.printStackTrace();
}
答案 1 :(得分:0)
使用DTO生成器创建您的MOdel类, https://plugins.jetbrains.com/plugin/7834-dto-generator
创建模型类,
package com.kintanpatel;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import java.util.List;
public class CampaignResponse {
@Expose
@SerializedName("Data")
private List<Data> Data;
@Expose
@SerializedName("NextPageLink")
private String NextPageLink;
@Expose
@SerializedName("PreviousLink")
private String PreviousLink;
@Expose
@SerializedName("TotalPages")
private int TotalPages;
@Expose
@SerializedName("Total")
private int Total;
@Expose
@SerializedName("RequestUserId")
private String RequestUserId;
public List<Data> getData() {
return Data;
}
public void setData(List<Data> Data) {
this.Data = Data;
}
public String getNextPageLink() {
return NextPageLink;
}
public void setNextPageLink(String NextPageLink) {
this.NextPageLink = NextPageLink;
}
public String getPreviousLink() {
return PreviousLink;
}
public void setPreviousLink(String PreviousLink) {
this.PreviousLink = PreviousLink;
}
public int getTotalPages() {
return TotalPages;
}
public void setTotalPages(int TotalPages) {
this.TotalPages = TotalPages;
}
public int getTotal() {
return Total;
}
public void setTotal(int Total) {
this.Total = Total;
}
public String getRequestUserId() {
return RequestUserId;
}
public void setRequestUserId(String RequestUserId) {
this.RequestUserId = RequestUserId;
}
public static class Data {
@Expose
@SerializedName("User")
private User User;
@Expose
@SerializedName("group")
private Group group;
@Expose
@SerializedName("contribution")
private int contribution;
@Expose
@SerializedName("collection")
private Collection collection;
@Expose
@SerializedName("Media")
private List<String> Media;
@Expose
@SerializedName("ModifiedDate")
private String ModifiedDate;
@Expose
@SerializedName("CreatedDate")
private String CreatedDate;
@Expose
@SerializedName("End")
private String End;
@Expose
@SerializedName("Start")
private String Start;
@Expose
@SerializedName("Amount")
private int Amount;
@Expose
@SerializedName("Status")
private String Status;
@Expose
@SerializedName("Terminate")
private String Terminate;
@Expose
@SerializedName("Description")
private String Description;
@Expose
@SerializedName("Title")
private String Title;
@Expose
@SerializedName("Id")
private int Id;
public User getUser() {
return User;
}
public void setUser(User User) {
this.User = User;
}
public Group getGroup() {
return group;
}
public void setGroup(Group group) {
this.group = group;
}
public int getContribution() {
return contribution;
}
public void setContribution(int contribution) {
this.contribution = contribution;
}
public Collection getCollection() {
return collection;
}
public void setCollection(Collection collection) {
this.collection = collection;
}
public List<String> getMedia() {
return Media;
}
public void setMedia(List<String> Media) {
this.Media = Media;
}
public String getModifiedDate() {
return ModifiedDate;
}
public void setModifiedDate(String ModifiedDate) {
this.ModifiedDate = ModifiedDate;
}
public String getCreatedDate() {
return CreatedDate;
}
public void setCreatedDate(String CreatedDate) {
this.CreatedDate = CreatedDate;
}
public String getEnd() {
return End;
}
public void setEnd(String End) {
this.End = End;
}
public String getStart() {
return Start;
}
public void setStart(String Start) {
this.Start = Start;
}
public int getAmount() {
return Amount;
}
public void setAmount(int Amount) {
this.Amount = Amount;
}
public String getStatus() {
return Status;
}
public void setStatus(String Status) {
this.Status = Status;
}
public String getTerminate() {
return Terminate;
}
public void setTerminate(String Terminate) {
this.Terminate = Terminate;
}
public String getDescription() {
return Description;
}
public void setDescription(String Description) {
this.Description = Description;
}
public String getTitle() {
return Title;
}
public void setTitle(String Title) {
this.Title = Title;
}
public int getId() {
return Id;
}
public void setId(int Id) {
this.Id = Id;
}
}
public static class User {
@Expose
@SerializedName("LastSeen")
private String LastSeen;
@Expose
@SerializedName("IsOnline")
private boolean IsOnline;
@Expose
@SerializedName("Coordinate")
private Coordinate Coordinate;
@Expose
@SerializedName("CoverPicture")
private String CoverPicture;
@Expose
@SerializedName("ProfilePicture")
private String ProfilePicture;
@Expose
@SerializedName("LastName")
private String LastName;
@Expose
@SerializedName("FirstName")
private String FirstName;
@Expose
@SerializedName("Id")
private String Id;
public String getLastSeen() {
return LastSeen;
}
public void setLastSeen(String LastSeen) {
this.LastSeen = LastSeen;
}
public boolean getIsOnline() {
return IsOnline;
}
public void setIsOnline(boolean IsOnline) {
this.IsOnline = IsOnline;
}
public Coordinate getCoordinate() {
return Coordinate;
}
public void setCoordinate(Coordinate Coordinate) {
this.Coordinate = Coordinate;
}
public String getCoverPicture() {
return CoverPicture;
}
public void setCoverPicture(String CoverPicture) {
this.CoverPicture = CoverPicture;
}
public String getProfilePicture() {
return ProfilePicture;
}
public void setProfilePicture(String ProfilePicture) {
this.ProfilePicture = ProfilePicture;
}
public String getLastName() {
return LastName;
}
public void setLastName(String LastName) {
this.LastName = LastName;
}
public String getFirstName() {
return FirstName;
}
public void setFirstName(String FirstName) {
this.FirstName = FirstName;
}
public String getId() {
return Id;
}
public void setId(String Id) {
this.Id = Id;
}
}
public static class Coordinate {
@Expose
@SerializedName("Longitude")
private double Longitude;
@Expose
@SerializedName("Latitude")
private double Latitude;
public double getLongitude() {
return Longitude;
}
public void setLongitude(double Longitude) {
this.Longitude = Longitude;
}
public double getLatitude() {
return Latitude;
}
public void setLatitude(double Latitude) {
this.Latitude = Latitude;
}
}
public static class Group {
@Expose
@SerializedName("Title")
private String Title;
@Expose
@SerializedName("Id")
private int Id;
public String getTitle() {
return Title;
}
public void setTitle(String Title) {
this.Title = Title;
}
public int getId() {
return Id;
}
public void setId(int Id) {
this.Id = Id;
}
}
public static class Collection {
@Expose
@SerializedName("Count")
private int Count;
@Expose
@SerializedName("Amount")
private int Amount;
public int getCount() {
return Count;
}
public void setCount(int Count) {
this.Count = Count;
}
public int getAmount() {
return Amount;
}
public void setAmount(int Amount) {
this.Amount = Amount;
}
}
}
下面的代码可以将JSON转换为模型,
@Override
public void onResponse(JSONObject response) {
Log.e("", "work!");
CampaignResponse item = new Gson().fromJson(response.toString(), CampaignResponse.class);
Log.e("Test", item.getTotal() + "Done");
}