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.

Was ist das problem? Kann man nicht serialisieren/Deserialisieren byte-array mit json-format? Oder was?
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

Schreibe einen Kommentar