エラーは次のとおりです。解析JSON - モデルスキーマ
方法は、 'java.lang.NullPointerExceptionが' 例外をスローしました。
JSONを改造して解析しようとしました。
{
"data": {
"list": [
{
"id": 58,
"beacon_id": "58",
"bridge_id": null,
"mesh_id": null,
"name": "eon_3c",
"location": "abcdlk",
"mac_address": "3c:cf:82:8a:e7:fe",
"firmware": "2.1",
"pcb_revision": "2.0",
"battery_level": "99",
"password": "0000",
"ib": {
"turn_on": "1",
"major": "33",
"minor": "344",
"tx_power": "7",
"interval": "400",
"uuid": "dae19960-18ea-11e5-8ff0-0002a5d5c521",
"secure_uuid": "0"
},
"euid": {
"turn_on": "0",
"namespace": null,
"instance": null,
"tx_power": null,
"interval": null
},
"eeid": {
"turn_on": "0",
"tx_power": null,
"interval": null
},
"eurl": {
"turn_on": "0",
"tx_power": null,
"interval": null,
"url": null
},
"etlm": {
"turn_on": "0",
"tx_power": null,
"interval": null
},
"assigned_bridge_id": null
},
{
"id": 56,
"beacon_id": "56",
"bridge_id": null,
"mesh_id": null,
"name": "Eon_e6",
"location": "test",
"mac_address": "e6:f5:8a:94:b8:c7",
"firmware": "2.1",
"pcb_revision": "2.0",
"battery_level": null,
"password": "0000",
"ib": {
"turn_on": "1",
"major": "2591",
"minor": "0",
"tx_power": "10",
"interval": "2593",
"uuid": "dae19960-18ea-11e5-8ff0-0002a5d5c521",
"secure_uuid": "0"
},
"euid": {
"turn_on": "0",
"namespace": null,
"instance": null,
"tx_power": null,
"interval": null
},
"eeid": {
"turn_on": "0",
"tx_power": null,
"interval": null
},
"eurl": {
"turn_on": "0",
"tx_power": null,
"interval": null,
"url": null
},
"etlm": {
"turn_on": "0",
"tx_power": null,
"interval": null
},
"assigned_bridge_id": null
},
{
"id": 57,
"beacon_id": "57",
"bridge_id": "13",
"mesh_id": "278",
"name": "Marta B",
"location": "lk",
"mac_address": "e1:4b:64:c3:80:e2",
"firmware": "2.1",
"pcb_revision": "2.0",
"battery_level": "97",
"password": "0000",
"ib": {
"turn_on": "1",
"major": "325",
"minor": "10",
"tx_power": "8",
"interval": "610",
"uuid": "dae19960-18ea-11e5-8ff0-0002a5d5c521",
"secure_uuid": "0"
},
"euid": {
"turn_on": "0",
"namespace": null,
"instance": null,
"tx_power": null,
"interval": null
},
"eeid": {
"turn_on": "0",
"tx_power": null,
"interval": null
},
"eurl": {
"turn_on": "0",
"tx_power": null,
"interval": null,
"url": null
},
"etlm": {
"turn_on": "0",
"tx_power": null,
"interval": null
},
"assigned_bridge_id": null
}
]
},
"ver": 1,
"time": 1475671202,
"status": 1,
"status_msg": ""
}
マイルートレスポンスクラスは次のようになります:私はこのようになり、サーバからJSONを持っているその瞬間に
public class BasicResponse<T> {
@Expose
public T data;
@Expose
public int ver;
@Expose
public long time;
@Expose
public byte status;
@Expose
public String status_msg;
}
は、すべてがよさそうです。今、私はデータを解析しようとします:
public class BeaconResponse {
@Expose
public int id;
@Expose
public long beacon_id;
@Expose
public long bridge_id;
@Expose
public long mesh_id;
@Expose
public String name;
@Expose
public String location;
@Expose
public String mac_address;
@Expose
public String firmware;
@Expose
public String pcb_revision;
@Expose
public byte battery_level;
@Expose
public String password;
@Expose
@SerializedName("ib")
public Ib ib;
@Expose
@SerializedName("euid")
public Euid euid;
@SerializedName("eeid")
@Expose
public Eeid eeid;
@SerializedName("eurl")
@Expose
public Eurl eurl;
@SerializedName("etlm")
@Expose
public Etlm etlm;
@Expose
public int assigned_bridge_id;
ここで問題が始まります。 euid、eeid、eurl、etlm、ibというオブジェクトを除いて、すべてが細かく解析されています。私がクラス名を変更すると、それらを除いてすべて細かいパースが行われます。それらはnullです。 JSONのキーと一致するようにクラス名を変更すると、改造エラーが発生します。私はPOJOを使用し、それは私のものと非常に似たクラスを作成しました。問題はどこにあるの? :このモデルを試してみてください
public class EuidModel extends Model {
@Expose
public boolean turn_on;
@Expose
public String namespace;
@Expose
public String instance;
@Expose
public int tx_power;
@Expose
public long interval;
public boolean isTurn_on() {
return turn_on;
}
public void setTurn_on(boolean turn_on) {
this.turn_on = turn_on;
}
public String getNamespace() {
return namespace;
}
public void setNamespace(String namespace) {
this.namespace = namespace;
}
public String getInstance() {
return instance;
}
public void setInstance(String instance) {
this.instance = instance;
}
public int getTx_power() {
return tx_power;
}
public void setTx_power(int tx_power) {
this.tx_power = tx_power;
}
public long getInterval() {
return interval;
}
public void setInterval(long interval) {
this.interval = interval;
}
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
public class EeidModel extends Model {
@Column
public boolean turn_on;
@Column
public int tx_power;
@Column
public int interval;
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
あなたは 'RetrofitError'をログに記録して、あなたの質問に追加したいかもしれません。 –
そして' BeaconsListResponse'とは何ですか? –
public class BeaconsListResponse { @Expose 公開リストリスト; } –
Bartos