1

GSONを使用してオブジェクトをJSON形式に変換しようとしています。次に、JSONをphpで記述されたWebサービスに送信します。残念ながら、何らかの理由で、メソッドgson.toJson(object)が機能していません。

私はこのJavaオブジェクトを持っています-介入(これには文字列、日付、時刻、ビットマップのタイプのいくつかのフィールドが含まれています)。私がこれをやろうとすると:

Gson gson = new Gson();
String json = gson.toJson(intervention);

これはgson変数で取得します。

gson = {serializeNulls:falsefactories:[Factory [type = com.google.gson.JsonElement、adapter = com.google.gson.internal.bind.TypeAdapters $ 25 @ 40fbe5c8]、com.google.gson.internal.bind.ObjectTypeAdapter $ 1 @ 411b7db8、Factory [type = java.lang.String、adapter = com.google.gson.internal.bind.TypeAdapters $ 13 @ 40ff42d0]、Factory [type = java.lang.Integer + int、adapter = com.google.gson .internal.bind.TypeAdapters $ 7 @ 411c00f8]、Factory [type = java.lang.Boolean + boolean、adapter = com.google.gson.internal.bind.TypeAdapters $ 3@411b4798]、Factory [type = java.lang.Byte + byte、adapter = com.google.gson.internal.bind.TypeAdapters $ 5@4122dbd0]、Factory [type = java.lang.Short + short、adapter = com.google.gson.internal.bind.TypeAdapters $ 6 @ 4122a0c8] 、Factory [type = java.lang.Long + long、adapter = com.google.gson.internal.bind.TypeAdapters $ 8 @ 40fc5d98]、Factory [type = java.lang.Double + double、a​​dapter=com。google.gson.Gson $ 4 @ 412295f0]、Factory [type = java.lang.Float + float、adapter = com.google.gson.Gson $ 5 @ 41229898]、Factory [type = java.lang.Number、adapter=com。 google.gson.internal.bind.TypeAdapters $ 11 @ 41223618]、Factory [type = java.lang.Character + char、adapter = com.google.gson.internal.bind.TypeAdapters $ 12 @ 41224168]、Factory [type=java。 lang.StringBuilder、adapter = com.google.gson.internal.bind.TypeAdapters $ 16@411a7550]、Factory [type = java.lang.StringBuffer、adapter = com.google.gson.internal.bind.TypeAdapters $ 17 @ 411a7790]、 Factory [type = java.math.BigDecimal、adapter = com.google.gson.internal.bind.TypeAdapters $ 14@40ff4568]、Factory [type = java.math.BigInteger、adapter=com.google.gson.internal.bind。 TypeAdapters $ 15 @ 411b4440]、Factory [type = java.net.URL、adapter = com.google.gson.internal.bind.TypeAdapters $ 18 @ 411be338]、Factory [type = java.net.URI、adapter=com.google。gson.internal.bind.TypeAdapters $ 19 @ 41229028]、Factory [type = java.util.UUID、adapter = com.google.gson.internal.bind.TypeAdapters $ 21 @ 411a2200]、Factory [type = java.util.Locale、 adapter = com.google.gson.internal.bind.TypeAdapters $ 24 @ 411a2510]、Factory [typeHierarchy = java.net.InetAddress、adapter = com.google.gson.internal.bind.TypeAdapters $ 20 @ 41229328]、Factory [type = java.util.BitSet、adapter = com.google.gson.internal.bind.TypeAdapters $ 2 @ 411ca140]、com.google.gson.internal.bind.DateTypeAdapter $ 1 @ 412024f8、Factory [type = java.util.Calendar + java .util.GregorianCalendar、adapter = com.google.gson.internal.bind.TypeAdapters $ 23 @ 411bef70]、com.google.gson.internal.bind.TimeTypeAdapter $ 1 @ 41229920、com.google.gson.internal.bind.SqlDateTypeAdapter $ 1 @ 411b67c0、com.google.gson.internal.bind.TypeAdapters $ 22 @ 411a2500、com.google.gson.internal.bind。ArrayTypeAdapter $ 1 @ 41222e90、com.google.gson.internal.bind.TypeAdapters $ 26@411b7ca0、Factory [type = java.lang.Class、adapter = com.google.gson.internal.bind.TypeAdapters $ 1 @ 4121d940]、com。 google.gson.internal.Excluder @ 4122a3c8、com.google.gson.internal.bind.CollectionTypeAdapterFactory @ 40ff26d0、com.google.gson.internal.bind.MapTypeAdapterFactory @ 40ff2980、com.google.gson.internal.bind.ReflectiveTypeAdapterFactory @ 40ff2ba0]、instanceCreators:{}}ReflectiveTypeAdapterFactory @ 40ff2ba0]、instanceCreators:{}}ReflectiveTypeAdapterFactory @ 40ff2ba0]、instanceCreators:{}}

import android.graphics.Bitmap;
import com.google.gson.annotations.SerializedName;
import java.util.Date;

パブリッククラスの介入{

@SerializedName("case_id")
private String case_id;
public String getCase_id() {
    return case_id;
}

@SerializedName("user_id")
private String user_id;
public String getUser_id() {
    return user_id;
}

@SerializedName("account_id")
private String account_id;
public String getAccount_id() {
    return account_id;
}

@SerializedName("description")
private String description;
public String getDescription() {
    return description;
}

@SerializedName("solution")
private String solution;
public String getSolution() {
    return solution;
}

@SerializedName("status")
private String status;
public String getStatus() {
    return status;
}

@SerializedName("user_remarks")
private String user_remarks;
public String getUser_remarks() {
    return user_remarks;
}


@SerializedName("customer_remarks")
private String customer_remarks;
public String getCustomer_remarks() {
    return customer_remarks;
}

@SerializedName("case_complete")
private boolean case_complete;
public boolean isCase_complete() {
    return case_complete;
}

@SerializedName("charge_transport")
private boolean charge_transport;
public boolean isCharge_transport() {
    return charge_transport;
}

@SerializedName("service_billable")
private boolean service_billable;
public boolean isService_billable() {
    return service_billable;
}

@SerializedName("date_created")
private Date date_created;
public Date getDate_created() {
    return date_created;
}

@SerializedName("arrival_time")
private String arrival_time;
public String getArrival_time() {
    return arrival_time;
}

@SerializedName("departure_time")
private String departure_time;
public String getDeparture_time() {
    return departure_time;
}

@SerializedName("user_sign")
private Bitmap user_sign;
public Bitmap getUser_sign() {
    return user_sign;
}

@SerializedName("cust_sign")
private Bitmap cust_sign;
public Bitmap getCust_sign() {
    return cust_sign;
}

public void setUser_id(String user_id) {
    this.user_id = user_id;
}

public void setCase_id(String case_id) {
    this.case_id = case_id;
}


public void setAccount_id(String account_id) {
    this.account_id = account_id;
}



public void setDescription(String description) {
    this.description = description;
}



public void setSolution(String solution) {
    this.solution = solution;
}



public void setStatus(String status) {
    this.status = status;
}


public void setUser_remarks(String user_remarks) {
    this.user_remarks = user_remarks;
}



public void setCustomer_remarks(String customer_remarks) {
    this.customer_remarks = customer_remarks;
}



public void setCase_complete(boolean case_complete) {
    this.case_complete = case_complete;
}



public void setCharge_transport(boolean charge_transport) {
    this.charge_transport = charge_transport;
}

public void setService_billable(boolean service_billable) {
    this.service_billable = service_billable;
}


public void setDate_created(Date date_created) {
    this.date_created = date_created;
}

public void setArrival_time(String arrival_time) {
    this.arrival_time = arrival_time;
}


public void setDeparture_time(String departure_time) {
    this.departure_time = departure_time;
}

public void setUser_sign(Bitmap user_sign) {
    this.user_sign = user_sign;
}

public void setCust_sign(Bitmap cust_sign) {
    this.cust_sign = cust_sign;
}

}

上記のクラスはオブジェクトクラスです。

オブジェクトの介入を確認し、フィールドにデータが入力されています。誰かが私にここで私が間違っていることを説明できますか?

4

1 に答える 1

4

Gson(2.2.2)の現在のバージョンはDateオブジェクトに問題がなく、それらを正常にシリアル化/逆シリアル化します。特定の形式を探している場合は、で使用setDateFormat()GsonBuilderて指定できます。

あなたのBitmapオブジェクトは別の問題です。これは非常に複雑なオブジェクトであり、Gsonが何をすべきかを知ることはありません(JSONで表現することさえ非常に難しいことを気にしないでください)。それを処理するには、カスタムシリアライザーとデシリアライザーを作成する必要があります。

ドキュメントを見ると、を使用Bitmapしてピクセルデータをint[]配列に抽出したり、適切な静的メソッドを使用してそのデータからをgetPixels()構築したりできるようです。これからJSONを生成する(そして他のパラメーターも含む)シリアライザーを作成してから、そのJSONを読み取ってを返す方法を知っているデシリアライザーを作成する必要があります。BitmapcreateBitmap()Bitmap

カスタムシリアライザー/デシリアライザーの作成に関する情報は、Gsonユーザーガイドに記載されています:https ://sites.google.com/site/gson/gson-user-guide#TOC-Custom-Serialization-and-Deserialization

于 2013-02-27T22:24:47.143 に答える