Konvertierung zwischen JSON-string und byte[] mit GSON
Ich bin mit hibernate an map-Objekten in die Datenbank. Ein client (eine iOS-app) schickt mir bestimmte Objekte im JSON-format, die ich konvertieren, um Ihre wahre Darstellung mit dem folgenden utility-Methode
/**
* Convert any json string to a relevant object type
* @param jsonString the string to convert
* @param classType the class to convert it too
* @return the Object created
*/
public static <T> T getObjectFromJSONString(String jsonString, Class<T> classType) {
if(stringEmptyOrNull(jsonString) || classType == null){
throw new IllegalArgumentException("Cannot convert null or empty json to object");
}
try(Reader reader = new StringReader(jsonString)){
Gson gson = new GsonBuilder().create();
return gson.fromJson(reader, classType);
} catch (IOException e) {
Logger.error("Unable to close the reader when getting object as string", e);
}
return null;
}
Das Problem jedoch ist, dass in meinem pogo ich Speichere den Wert als byte[] wie kann unten gesehen werden (wie dies ist, was gespeichert ist in der Datenbank ein blob)
@Entity
@Table(name = "PersonalCard")
public class PersonalCard implements Card{
@Id @GeneratedValue
@Column(name = "id")
private int id;
@OneToOne
@JoinColumn(name="userid")
private int userid;
@Column(name = "homephonenumber")
protected String homeContactNumber;
@Column(name = "mobilephonenumber")
protected String mobileContactNumber;
@Column(name = "photo")
private byte[] optionalImage;
@Column(name = "address")
private String address;
Nun natürlich die Konvertierung schlägt fehl, weil es nicht umwandeln kann zwischen einem byte[] und einem String.
Ist der beste Ansatz hier ändern Sie den Konstruktor akzeptiert einen String statt einem byte-array und dann die Konvertierung selber machen, während die Einstellung der byte-array-Wert oder ist es ein besserer Ansatz, um dies zu tun.
Den Fehler geworfen werden, ist wie folgt;
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException:
Erwartet BEGIN_ARRAY war aber STRING in Zeile 1 Spalte 96 Weg
$.optionalImage
Dank
Bearbeiten In der Tat auch der Ansatz, den ich vorgeschlagen nicht funktionieren wird aufgrund der Art und Weise, in der GSON erzeugt das Objekt.
ich erhalte ein Objekt als json und direkt konvertieren es in meinem hibernate pojo. die hibernate pojo arbeitet in byte-array-format. die GSON-Bibliothek konvertiert string zu Objekt-und scheint zu scheitern, zum konvertieren des byte[]
Was ist der Fehler auf, dass scheitern?
Hinzugefügt haben die OP
vielleicht kann dies Ihnen helfen, link
InformationsquelleAutor Biscuit128 | 2014-08-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie diese adapter zum serialisieren und Deserialisieren von byte-arrays, die in base64.
Hier ist der Inhalt.
Credit an den Autor Ori Peleg.
InformationsquelleAutor Ken de Guzman
Von einigen blog für die Zukunft, sofern die Verknüpfung nicht verfügbar ist, atleast Benutzer können finden Sie hier.
InformationsquelleAutor Ankur Singhal
Können Sie einfach nehmen Sie das Foto als String in POJO , und im Setter-Methode konvertieren von String zu byte[] und zurück byte[] in Get-Methode
InformationsquelleAutor yogendra saxena