我在解析json数据时遇到此错误:
Expected BEGIN_ARRAY but was STRING at line 1 column 1156
我找不到解决方案。我的json数据是:
{
"project": [
{
"abbreviation": "abd",
"customer": "customer1",
"description": "description1",
"icon": "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC4UlEQVR42sXTXUhTYRgH8NNNXkTdmPlRpltqalgXZlB4hCC6C8VyYjErtbCoNLJiqQmOtqmYCkUXdhNEGSHYuVXCj81N58dcO+rOPt3c2dnOWTubeSPUv6PZx1U3XfTAj4f3gf/zXL0E8d+LoqgEw+RkvnnOWmi22H6Ytx4bHRtLSt2XSKhUqr8vkMKFYS5I8y5LhGemBYEx8xHPp3CICxpoevFcf3//LrVanaDRaBK0Wu0WnU632XdK8x3E1MxcSZR1Cez7ewgM1IEdqEWYasW6yCMajQqBQGDE5/N98Hq9lNvtppxOJ8UwDEXT9LuJiYmThMlkIuMxUVgXQ1KIw5doEGufOcRjMYiiiEgkAp7nwXEcWJaF3+/HysoKnC7XxtTUdA1hNBrJzUvx+Bpi8Thisbh0+XcwFAohyIUQYANS0A2P2wGXyw6GWdyYMo7VEXq9nuR5QSpeCnDgw0GEQ6x0MQA24MeqzwPvwhiWXzeD7q6CrecibL2XYO2s+DrzoGCEGNcbilmfk3e8fYSlXiWWn13F8vMaLD27gsU+JWydFbDcLcRsVTJmFEmYqdym2AuzcreDGNWbij02A79w/wTmlOmYqz74y6zypwzMVmdi9vIfqjNgrk0cJz5OmIoZI8Vb7kkLruVK8rblbpm/dhjz1yX1ObBsuvHD5tt8K3WQGB43FtPDr3hLYxEW6o/CWl8A280jWLydh+XGHDBNWXA+lMOpksHVnAlnSyYcrTLYW+SwtqS9kBZMkrahPoG+Uwh7w1G4m/LgV2Uh2CZDWJ0BQZOOSMd+RDpTIXSlgJdwnWlY7TjwjdGmtRFvBoeK9C9b7fMNx2J0U67oeHRI9D6WiavtcjH4JEvktBKdXJIusrpU0a9NFj2aFNHefiBsUGVcJk6fObunqbq0SF2aX6IpyyY7yrPIrvPZZHdFDtmjyCV7K/O3+lOFNFPIya4KGdlxQUa2l8lPlR9PS/nnz/gdnPcTQcpv7vgAAAAASUVORK5CYII=",
"name": "projectname1",
"plannedEndDate": "2012-05-25T00:00:00+01:00",
"plannedStartDate": "2012-05-23T00:00:00+01:00",
"projectStatus": {
"name": "Opened"
},
"realEndDate": "2012-05-25T00:00:00+01:00",
"realStartDate": "2012-05-23T00:00:00+01:00"
}
]
}
我将图像转换为字节数组,如下所示:
public static byte[] convertToByteArray(String path) {
byte[] imageInByte = null;
try{
BufferedImage originalImage =
ImageIO.read(new File(path));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write( originalImage, "png", baos );
baos.flush();
imageInByte = baos.toByteArray();
baos.close();
}catch(IOException e){
System.out.println(e.getMessage());
}
return imageInByte;
}
我正在将图标从字节数组转换为Bitmap,如下所示:
Bitmap bm = BitmapFactory.decodeByteArray(project.getIcon(), 0,
project.getIcon().length);
DisplayMetrics dm = new DisplayMetrics();
holder.imageProjet.setMinimumHeight(dm.heightPixels);
holder.imageProjet.setMinimumWidth(dm.widthPixels);
holder.imageProjet.setImageBitmap(bm);
我反序列化JSON响应的代码:
Gson gson = new GsonBuilder().setDateFormat(
"yyyy-MM-dd'T'HH:mm:ssZ").create();
final ProjectContainer container = gson.fromJson(resultat,
ProjectContainer.class);
final ListView lv = (ListView) findViewById(R.id.list);
/**
* Updating parsed JSON data into ListView
* */
adaptateur = new ProjectAdapter(ProjectActivity.this,
R.layout.ligne_project, container);
这是我的ProjectContainer类:
public class ProjectContainer {
@SerializedName("project")
List<Project> projects ;
public List<Project> getProjects() {
return projects;
}
public void setProjects(List<Project> projects) {
this.projects = projects;
}
}
这是Project类:
public class Project implements Serializable {
private static final long serialVersionUID = 1L;
@SerializedName("projectStatus")
private ProjectStatus projectStatus;
@SerializedName("name")
private String name;
@SerializedName("description")
private String description;
@SerializedName("abbreviation")
private String abbreviation;
@SerializedName("customer")
private String customer;
@SerializedName("plannedStartDate")
private Date plannedStartDate;
@SerializedName("plannedEndDate")
private Date plannedEndDate;
@SerializedName("realStartDate")
private Date realStartDate;
@SerializedName("realEndDate")
private Date realEndDate;
@SerializedName("isDeleted")
private Boolean isDeleted;
@SerializedName("icon")
private byte[] icon;
public Project() {
}
public Project(String name, String description, String abbreviation,
String customer, Date plannedStartDate, Date plannedEndDate,
ProjectStatus projectStatus, Date realStartDate, Date realEndDate) {
this.name = name;
this.description = description;
this.abbreviation = abbreviation;
this.plannedStartDate = plannedStartDate;
this.plannedEndDate = plannedEndDate;
this.projectStatus = projectStatus;
this.realStartDate = realStartDate;
this.realEndDate = realEndDate;
this.customer = customer;
}
public String toString() {
return name;
}
public ProjectStatus getProjectStatus() {
return this.projectStatus;
}
public void setProjectStatus(ProjectStatus projectStatus) {
this.projectStatus = projectStatus;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return this.description;
}
public void setDescription(String description) {
this.description = description;
}
public String getAbbreviation() {
return this.abbreviation;
}
public void setAbbreviation(String abbreviation) {
this.abbreviation = abbreviation;
}
public Date getPlannedStartDate() {
return this.plannedStartDate;
}
public void setPlannedStartDate(Date plannedStartDate) {
this.plannedStartDate = plannedStartDate;
}
public Date getPlannedEndDate() {
return this.plannedEndDate;
}
public void setPlannedEndDate(Date plannedEndDate) {
this.plannedEndDate = plannedEndDate;
}
public Date getRealStartDate() {
return this.realStartDate;
}
public void setRealStartDate(Date realStartDate) {
this.realStartDate = realStartDate;
}
public Date getRealEndDate() {
return this.realEndDate;
}
public void setRealEndDate(Date realEndDate) {
this.realEndDate = realEndDate;
}
public byte[] getIcon() {
return this.icon;
}
public void setIcon(byte[] icon) {
this.icon = icon;
}
public String getCustomer() {
return this.customer;
}
public void setCustomer(String customer) {
this.customer= customer;
}
}
如果您能帮助我解决这个问题,我将不胜感激。提前致谢
当您尝试解析该字段时会引发Exception "icon"
,因为在JSON响应中有一个字符串,并且您尝试将其解析为byte[]
。
由于在您的类中icon
是一个字节数组,因此当它尝试解析该字段时"icon"
会说“ 期望一个数组
”,但是在JSON响应"icon"
中不是数组(没有被包围[ ]
),因此它说“ 但是是一个字符串 “ …
编辑
:这就是说,为了解决这个问题,在我看来,最简单的方法是改变类型icon
的String
正确解析,然后进行转换到byte[]
别的地方…例如,你可以在一个方法假设类public byte[] getIconAsByteArray() {...}
进行转换。
否则,这可能是最 优雅的 解决方案,您需要编写一个
自定义解串器
。
问题内容: 我在解析JSON数据时遇到以下错误: 预期为begin_array,但在第1行第34列处为STRING 我找不到解决办法。我的JSON是以下内容: 这是我的PersonContent类: 以下是人员类别: 这是我反序列化前面提到的JSON数据的代码 我尝试了在这里找到的所有解决方案,但找不到相同的JSON。 问题答案: 错误出现在您收到的json中:您的类需要一个数组,因为 但是然后在
我不知道该修好它 我怎么了? 我的json是 E/DDD:onFailure:java.lang.IllegalStateException:应为BEGIN_ARRAY,但在第1行第44列路径$.data处为BEGIN_OBJECT 有什么问题?谢谢!
首先,我从服务器获得了这个Json对象,然后使用reverfit lib显示曲目名称是列表。但其返回此问题应为BEGIN_ARRAY,但在COLOMUNS 1处为BEGIN_OBJECTS。 我正在使用这些类: 并且此跟踪类:
我正在尝试使用改版在我的应用程序上实现登录,但是我一直得到这个错误不确定是什么错误,java.lang.IllegalStateException:应该是BEGIN_OBJECT,但应该是BEGIN_ARRAY 这是邮递员的回复 和我的登录类