#java #android #json #android-studio #bitmap
#java #Android #json #android-studio #растровое изображение
Вопрос:
Я пытаюсь преобразовать JSON обратно в объект, когда возникает эта ошибка. Как я могу избавиться от этой ошибки? Это класс, объект которого я пытаюсь получить после преобразования из JSON:
class Recognition implements Serializable {
private final String id;
private final String title;
private final Float distance;
private Object extra;
private RectF location;
private Integer color;
private Bitmap crop;
public Recognition(
final String id, final String title, final Float distance, final RectF location) {
this.id = id;
this.title = title;
this.distance = distance;
this.location = location;
this.color = null;
this.extra = null;
this.crop = null;
}
public void setExtra(Object extra) {
this.extra = extra;
}
public Object getExtra() {
return this.extra;
}
public void setColor(Integer color) {
this.color = color;
}
public String getId() {
return id;
}
public String getTitle() {
return title;
}
public Float getDistance() {
return distance;
}
public RectF getLocation() {
return new RectF(location);
}
public void setLocation(RectF location) {
this.location = location;
}
public Integer getColor() {
return this.color;
}
public void setCrop(Bitmap crop) {
this.crop = crop;
}
public Bitmap getCrop() {
return this.crop;
}
@Override
public String toString() {
String resultString = "";
if (id != null) {
resultString = "[" id "] ";
}
if (title != null) {
resultString = title " ";
}
if (distance != null) {
resultString = String.format("(%.1f%%) ", distance * 100.0f);
}
if (location != null) {
resultString = location " ";
}
if (color != null) {
resultString = color " ";
}
if (extra != null) {
resultString = extra " ";
}
if (crop != null) {
resultString = encodeToBase64(crop, Bitmap.CompressFormat.JPEG, 100) " ";
}
return resultString.trim();
}
public static String encodeToBase64(Bitmap image, Bitmap.CompressFormat compressFormat, int quality)
{
ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream();
image.compress(compressFormat, quality, byteArrayOS);
return Base64.encodeToString(byteArrayOS.toByteArray(), Base64.DEFAULT);
}
public static Bitmap decodeBase64(String input)
{
byte[] decodedBytes = Base64.decode(input, 0);
return BitmapFactory.decodeByteArray(decodedBytes, 0, decodedBytes.length);
}
private void writeObject(java.io.ObjectOutputStream out) throws IOException {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
crop.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
out.writeInt(byteArray.length);
out.write(byteArray);
}
private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException {
int bufferLength = in.readInt();
byte[] byteArray = new byte[bufferLength];
int pos = 0;
do {
int read = in.read(byteArray, pos, bufferLength - pos);
if (read != -1) {
pos = read;
} else {
break;
}
} while (pos < bufferLength);
crop = BitmapFactory.decodeByteArray(byteArray, 0, bufferLength);
}
}
Я думаю, что может быть какая-то проблема в конструкторе или в преобразовании bitmap. Но я не уверен. Итак, если у вас есть какое-либо решение. Пожалуйста, дайте мне знать.
Комментарии:
1. Смогли ли вы найти решение? @HuzaifaAsif