2016-07-12 4 views
0

Ich versuche, in einem etwas komplexen JSON-String zu lesen, und ich habe Probleme mit verschachtelten Elementen und wie Sie sie abrufen.Problem mit der Konvertierung von JSON in Java

Mein Java-Code sieht wie folgt aus

String longJson = "{'Patient': {'Name': {'Given': 'FirstName','Family': 'LastName'},'Gender': 'Female','DOB': '1980-07-04T00:00:00.0000000','AgeInYears': 36,'MartialStatus': 'Single', 'Race': 'Race','Ethnicity': 'Ethnicity','Class': 'Inpatient','Address': {'StreetAddress': 'StreetAddress','City': 'City','State': 'State','ZipCode': 'ZipCode', 'Country': 'Country'}}}"; 

    Gson gson = new Gson(); 

    PrescriptionReq sample = null; 
    sample = gson.fromJson(longJson, PrescriptionReq.class); 


    String firstName = sample.getPatient().getName().getGiven(); 
    //String firstName = sample.patient.name.getGiven(); 
    System.out.println("Testing: "+ firstName); 

Wenn ich entweder Ansatz führe ich ein Null-Punkt Ausnahme

Hier erhalten die Json in eine besser lesbare Ansicht

 { 
     "Patient": { 
      "Name": { 
       "Given": "FirstName", 
       "Family": "LastName" 
      }, 
      "Gender": "Female", 
      "DOB": "1980-07-04T00:00:00.0000000", 
      "AgeInYears": 36, 
      "MartialStatus": "Single", 
      "Race": "Race", 
      "Ethnicity": "Ethnicity", 
      "Class": "Inpatient", 
      "Address": { 
       "StreetAddress": "StreetAddress", 
       "City": "City", 
       "State": "State", 
       "ZipCode": "ZipCode", 
       "Country": "Country" 
      } 
     } 
    } 

Hier sind meine Klassen:

public class PrescriptionReq { 
private Patient patient; 

public Patient getPatient(){ 
    return patient; 
} 

public class Patient { 
    Name name; 
    Address address; 

    public Name getName(){ 
     return name; 
    } 
    //Other variables 
    } 

public class Name { 
    private String Given; 
    private String Family; 

    public String getGiven() { 
     return Given; 
    } 

    public String getFamily() { 
     return Family; 
    } 

    } 
} 

Ich bin mir nicht sicher, ob ich den JSON falsch speichern oder falsch abrufen werde. Jede Hilfe wird sehr geschätzt!

+0

Welcher Teil ist null? – SLaks

+0

Zeichenfolge firstName = sample.getPatient(). GetName(). GetGiven(); gibt eine Nullzeigerausnahme zurück – mmm2893

Antwort

0

Ihre Feldnamen stimmen nicht mit Ihrem JSON überein. Daher erhalten Sie ein PrescriptionReq Objekt mit einem null Patientenfeld zurück.

Aus der Spitze von meinem Kopf, ich kann von ein paar Möglichkeiten denken, dies zu beheben:

  • Ändern Sie den Namen der Variablen

    das JSON-Feld übereinstimmen
    public class PrescriptionReq { 
        // have to rename Patient class to avoid name collision 
        private PRPatient Patient; 
    ... 
    
  • ein In @SerializedName Anmerkung zu sagen Gson was der "echte" Feldname ist

    public class PrescriptionReq { 
        @SerializedName("Patient") 
        private Patient patient; 
    ... 
    

Natürlich müssen Sie dies auch für das name Feld in der Patient Klasse tun, sowie alles in Address Sie haben Probleme mit.

Verwandte Themen