Prabhtejシン:
私はからモデルを作成したいJSON
キーが値です。これは、正確な問題を説明したが、ですiOS
。私は、Androidで同様のソリューションを求めています。基本的に私は、Androidで復号可能な同等のものを持っていると思います。
私が使用していますGSON
解析するJSON
モデルに。今のところ、私は、静的な値に対して、(リンクで述べた)JSONのキーを比較しました。
JSON:
{
"rows" :
[
{
"_id": "5cdc0ede5c3dcb04bdb3a972",
"emp_code": 187,
"log_id": 361711,
"punch_time": "2019-05-07T04:00:33.000Z",
"pin_type": 1,
"status": 4,
"__v": 0
},
{
"_id": "5cdc40de5c3dcb04bdb3a972",
"emp_code": 111,
"log_id": 361701,
"punch_time": "2019-05-07T04:00:35.000Z",
"pin_type": 101,
"status": 4,
"__v": 0
}
],
"pin_type_text": {
"1": "In Fingerprint",
"4": "In Card",
"101": "Out Fingerprint",
"104": "Out Card"
}
}
値pin_type各行にはレコードを指すpin_type_textそれのキーを用いてマッピングされました。
私が使用していますGSONのモデルを作成するために、ここでモデルクラスです。
class MyModel {
var length : Long = 0
var rows = ArrayList<Rows>()
var pin_type_text : String = ""
}
class PinTypeText {
var 1 : String = ""
var 4 : String = ""
var 101 : String = ""
var 104 : String = ""
}
基本的に、クラスPinTypeTextで定義されたキーは、共有JSONに見られるように行モデルで得られたキーの値「pin_type」です。したがって、この場合には、「PinTypeText」のキーは「行」で定義された値に依存しています。そこで、私は「PinTypeText」モデルは、「行」モデルから「pin_type」値に関して作成することにしたいです。
問題:、将来的に想定「pin_typeの価値観- 1、4、101、104、バックエンドの変化、どのように私は私のモデルを変更せずに、このようなケースを扱うことができます。このモデル構造ごととして、私は私のモデルクラスごとに時間を変更する必要があるバックエンドモデルの変更
あなたのmfak:
あなたの応答モデルは、このようなものになりますので、あなたは、カスタムクラスとしてJsonElementとしてアイテムPinTypeTextを保存することができず、
public class Response{
@SerializedName("rows")
@Expose
private List<Row> rows = null;
@SerializedName("pin_type_text")
@Expose
private JsonElement pinTypeText;
public List<Row> getRows() {
return rows;
}
public void setRows(List<Row> rows) {
this.rows = rows;
}
public JsonElement getPinTypeText() {
return pinTypeText;
}
public void setPinTypeText(JsonElement pinTypeText) {
this.pinTypeText = pinTypeText;
}
}
あなたはタイプを確認したいときにJsonObjectに変換し、キーの値を取得することができ、例えば、
pinTypeText= response.getPinTypeText().asJsonObject().get([your pin_type here]).toString()