0
gsonを使用してJsonを解析します。 しかし、カスタムフィールド以下 に特定jsonProperty解析されていないgsonは一例です:Gsonがカスタムフィールドを解析する方法
`json String : { "SONUMBER": "PSO1706000006 "}`
Javaクラス
public class Item {
@SerializedName("SONUMBER")
@Expose
public BindableString sONUMBER;
}
BindableString.javaクラス
public class BindableString extends BaseObservable {
private String value = "";
public String get() {
return !value.isEmpty() ? value : "";
}
public void set(String value) {
if (!Objects.equals(this.value, value)) {
this.value = value;
notifyChange();
}
}
public boolean isEmpty() {
return value == null || value.isEmpty();
}
@Override
public String toString() {
return value;
}
@BindingConversion
public static String bindableString(BindableString bindableString) {
if (bindableString != null) {
return bindableString.value;
} else {
return null;
}
}
}
が、私はJSONを解析するときに私が取得しますItem.sONUMBER変数のnull
解析されたjson値をItem.sONUMBERに入れたい。
これを達成するにはどうすればよいですか?
あなたは、このようなカスタム型デシリアライザを書くimport java.lang.reflect.Type;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
public class BindableStringDeserializer implements JsonDeserializer<BindableString> {
@Override
public BindableString deserialize(JsonElement json, Type arg1,
JsonDeserializationContext arg2) throws JsonParseException {
BindableString bindableString = new BindableString();
bindableString.set(json.getAsString());
return bindableString;
}
}
と、このようなGsonオブジェクトを作成することができます。このため
ありがとう仲間、あなたは私の問題を解決しました – user3481301