[英]Retrofit2: Display Json Object in an Array
我正在尝试显示以下 JSON 的信息。
{
"resourceType": "Patient",
"text": {
"status": "generated",
"div": "<div>\n \n <table>\n \n <tbody>\n \n <tr>\n \n <td>Name</td>\n \n <td>Peter James \n <b>Chalmers</b> ("Jim")\n </td>\n \n </tr>\n \n <tr>\n \n <td>Address</td>\n \n <td>534 Erewhon, Pleasantville, Vic, 3999</td>\n \n </tr>\n \n <tr>\n \n <td>Contacts</td>\n \n <td>Home: unknown. Work: (03) 5555 6473</td>\n \n </tr>\n \n <tr>\n \n <td>Id</td>\n \n <td>MRN: 12345 (Acme Healthcare)</td>\n \n </tr>\n \n </tbody>\n \n </table> \n \n </div>"
},
"identifier": [
{
"fhir_comments": [
" MRN assigned by ACME healthcare on 6-May 2001 "
],
"use": "usual",
"type": {
"coding": [
{
"system": "http://hl7.org/fhir/v2/0203",
"code": "MR"
}
]
},
"system": "urn:oid:1.2.36.146.595.217.0.1",
"value": "12345",
"period": {
"start": "2001-05-06"
},
"assigner": {
"display": "Acme Healthcare"
}
}
],
"active": true,
"name": [
{
"fhir_comments": [
" Peter James Chalmers, but called \"Jim\" "
],
"use": "official",
"family": [
"Chalmers"
],
"given": [
"Peter",
"James"
]
},
{
"use": "usual",
"given": [
"Jim"
]
}
],
"telecom": [
{
"fhir_comments": [
" home communication details aren't known "
],
"use": "home"
},
{
"system": "phone",
"value": "(03) 5555 6473",
"use": "work"
}
],
"gender": "male",
"_genderInfo": {
"fhir_comments": [
" use FHIR code system for male / female "
]
},
"birthDate": "1974-12-25",
"_birthDateInfo": {
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-birthTime",
"valueDateTime": "1974-12-25T14:35:45-05:00"
}
]
},
"deceasedBoolean": false,
"address": [
{
"use": "home",
"type": "both",
"line": [
"534 Erewhon St"
],
"city": "PleasantVille",
"district": "Rainbow",
"state": "Vic",
"postalCode": "3999",
"period": {
"start": "1974-12-25"
}
}
],
"contact": [
{
"relationship": [
{
"coding": [
{
"system": "http://hl7.org/fhir/patient-contact-relationship",
"code": "partner"
}
]
}
],
"name": {
"family": [
"du",
"Marché"
],
"_familyInfo": [
{
"extension": [
{
"fhir_comments": [
" the \"du\" part is a family name prefix (VV in iso 21090) "
],
"url": "http://hl7.org/fhir/StructureDefinition/iso21090-EN-qualifier",
"valueCode": "VV"
}
]
},
null
],
"given": [
"Bénédicte"
]
},
"telecom": [
{
"system": "phone",
"value": "+33 (237) 998327"
}
],
"gender": "female",
"period": {
"start": "2012",
"_startInfo": {
"fhir_comments": [
" The contact relationship started in 2012 "
]
}
}
}
]
}
我的 @GET 课程
public interface RetrofitObjectAPI {
@GET("Patient/4765?_format=json")
Call<Patient> getPatientDetails();
}
我用http://www.jsonschema2pojo.org/创建了 MOJO(Getter 和 Setter 被缩短只是为了显示重要的)
public class Patient {
private String resourceType;
private int id;
private Text text;
private List<Identifier> identifier = null;
private boolean active;
private List<Name> name = null;
private List<Telecom> telecom = null;
private String gender;
private GenderInfo genderInfo;
private String birthDate;
private BirthDateInfo birthDateInfo;
private boolean deceasedBoolean;
private List<Address> address = null;
private List<Contact> contact = null;
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
public List<Name> getName() {
return name;
}
public void setName(List<Name> name) {
this.name = name;
}
Name 类看起来像这样
public class Name {
private List<String> fhirComments = null;
private String use;
private List<String> family = null;
private List<String> given = null;
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
public List<String> getFhirComments() {
return fhirComments;
}
public void setFhirComments(List<String> fhirComments) {
this.fhirComments = fhirComments;
}
public String getUse() {
return use;
}
public void setUse(String use) {
this.use = use;
}
public List<String> getFamily() {
return family;
}
public void setFamily(List<String> family) {
this.family = family;
}
public List<String> getGiven() {
return given;
}
public void setGiven(List<String> given) {
this.given = given;
}
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
}
我可以在没有这样的数组的情况下获取信息:
public void getRetrofitObject() {
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
.create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
RetrofitObjectAPI service = retrofit.create(RetrofitObjectAPI.class);
Call<Patient> callPatient = service.getPatientDetails();
callPatient.enqueue(new Callback<Patient>() {
@Override
public void onResponse(Call<Patient> call, Response<Patient> response) {
text_id_1.setText("Resource Type: " + response.body().getResourceType());
text_id_2.setText("ID: " + response.body().getId());
text_id_3.setText("Text: " + response.body().getText().getStatus());
}
@Override
public void onFailure(Call<Patient> call, Throwable t) {
Log.d("x", "x");
}
});
}
这段代码直到现在都按照它应该的方式工作。 但我不知道如何显示它们的数组项。 例如,我想在“名称”中显示提交的“使用”或“给定”。 我怎样才能访问它们?
尝试将其添加到您的onResponse
调用中。
Patient patient = response.body();
List<Name> names = patient.getName();
for (Name name : names) {
System.out.println(name.getGiven());
System.out.println(name.getFamily());
System.out.println(name.getUse());
}
您拥有Patient
对象中的所有信息,您只需要使用您拥有的 getter 和 setter 来查找它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.