2017-05-11 2 views
2

Ich schreibe ein RESTful-API-Programm, das auf AWS bereitgestellt wird. Ich bekomme JSON-Ausgabe vom Programm. Beim Testen des Programms wird die JSON-Ausgabe zurückgegeben, die nicht der erwarteten Ausgabe entspricht. Die Ausrichtung, Groß- und Kleinschreibung stimmt auch nicht so, wie ich es möchte.JSON Ausgabe Java

Erwartete Ausgabe:

[ 
    { 
    "Username": "****", 
    "UUID": "****", 
    "Tenant_ID": "****", 
    "Site_ID": "****" 
    } 
] 

Ausgang empfangen:

[ 
    { 
    "UUID": "****", 
    "site_ID": "****", 
    "tenant_ID": "****", 
    "userName": "****" 
    } 
] 

Ressourcen Code:

public List<Data> getData(){ 
    List<Data> list = new ArrayList<>(); 
    Connection conn = null; 
    Statement stat = null; 
    try{ 
     Class.forName("com.mysql.jdbc.Driver"); 
     conn = DriverManager.getConnection(DB_URL); 
     stat = conn.createStatement(); 
     String sql = "SELECT * FROM data"; 
     ResultSet resu = stat.executeQuery(sql); 
     while(resu.next()){ 
      String UserName = resu.getString("username"); 
      String UUID = resu.getString("UUID"); 
      String Tenant_ID = resu.getString("tenant_id"); 
      String Site_ID = resu.getString("site_id"); 
      list.add(new Data(UserName, UUID, Tenant_ID, Site_ID)); 
     } 
     resu.close(); 
     stat.close(); 
     conn.close(); 
    } 
    catch(SQLException se){ 
     se.printStackTrace(); 
    } 
    catch(Exception e){ 
     e.printStackTrace(); 
    } 
    finally{ 
     try{ 
      if(stat!=null){ 
       stat.close(); 
      } 
     } 
     catch (SQLException se2){ 
      se2.printStackTrace(); 
     } 
     try{ 
      if(conn!=null){ 
       conn.close(); 
      } 
     } 
     catch(SQLException se3){ 
      se3.printStackTrace(); 
     } 
    } 
    return list; 
} 

Servicecode:

@Produces(MediaType.APPLICATION_JSON) 
@GET 
@Path("/v2") 
public List<Data> getData(){ 
    return ds.getData(); 
} 
Klasse

Daten:

public class Data { 
    private String UserName; 
    private String UUID; 
    private String Tenant_ID; 
    private String Site_ID; 

    public Data(){ 

    } 

    public Data(String userName, String uUID, String tenant_ID, String site_ID) { 
     super(); 
     UserName = userName; 
     UUID = uUID; 
     Tenant_ID = tenant_ID; 
     Site_ID = site_ID; 
    } 

    public Data(String uUID, String tenant_ID, String site_ID) { 
     super(); 
     UUID = uUID; 
     Tenant_ID = tenant_ID; 
     Site_ID = site_ID; 
    } 

    @JsonProperty("Username") 
    public String getUserName() { 
     return UserName; 
    } 

    public void setUserName(String userName) { 
     UserName = userName; 
    } 

    @JsonProperty("UUID") 
    public String getUUID() { 
     return UUID; 
    } 

    public void setUUID(String UUID) { 
     this.UUID = UUID; 
    } 

    @JsonProperty("Tenant_ID") 
    public String getTenant_ID() { 
     return Tenant_ID; 
    } 

    public void setTenant_ID(String tenant_ID) { 
     Tenant_ID = tenant_ID; 
    } 

    @JsonProperty("Site_ID") 
    public String getSite_ID() { 
     return Site_ID; 
    } 

    public void setSite_ID(String site_ID) { 
     Site_ID = site_ID; 
    } 
} 

Dank für jedes Mitglied, das in dieser Frage helfen.

+0

Entweder müssen Sie den Code in der Rest-API für die Rückgabe von JSON ändern oder diesen JSON akzeptieren und an Ihrer Seite manipulieren. –

+0

Hallo. @NitinDhomse Oben ist mein Code in der REST-API für die Rückgabe von JSON und ich möchte ihn ändern, um die erwartete Ausgabe zu erhalten, aber ich weiß nicht, wo ich ihn ändern soll. –

+0

Können Sie Ihre Importe am Anfang Ihrer 'Data'-Klasse veröffentlichen? Ich vermute, dass Sie eine leicht falsche Anmerkung importieren, so dass '@ JsonProperty' nicht das tut, was Sie erwarten. –

Antwort

0

Es gibt eine gute Chance, dass Sie von dem älteren org.codehaus.jackson Paket der jackson Anmerkung @JsonProperty Annotation importieren, wenn Sie nur die neuere Version von jackson einschließlich werden sollen (die in einem anderen Projekt) com.fasterxml.jackson in Ihr Projekt.

Überprüfen Sie Ihre Abhängigkeiten für die ältere "Codehaus" -Version und aktualisieren Sie sie, um nur auf die neue zu verweisen (diese Änderung sollte mit Ihrem Code vorwärtskompatibel sein).

Dann versuchen Sie eine Neuerstellung, um zu sehen, ob es wie erwartet funktioniert.

Siehe hier: https://stackoverflow.com/a/30782762/808532

+0

Hallo. @RyanWeir Danke für deine Antwort. Ich habe meine pom.xml überprüft. I enthalten ' \t \t com.fasterxml.jackson.core \t \t jackson-Annotationen \t \t 2.3.2 \t \t'. Ich finde auch kein "Codehaus" auf meiner pom.xml. –

+0

Es ist möglich, dass eine andere Abhängigkeit dazu führt, dass Jackson v1 zur Erstellungszeit herangezogen wird - versuchen Sie, 'mvn dependency: tree' in Ihrem Projektverzeichnis auszuführen und suchen Sie nach Verweisen auf verschiedene Versionen, um zu sehen, ob das der Fall ist. –

0

Versuchen Sie jackson Anmerkungen auf die ältere Version codehhaus Herabstufung. Wenn so ein Problem auftritt, gibt es eine Verwechslung mit der von Jersey verwendeten Version von jackson und der Version der Anmerkungen. Da Sie die neuen Anmerkungen verwenden, verwenden Sie die älteren. org.codehaus.jackson.annotate.JsonProperty

+0

Hallo. @eDog Danke für deine Antwort.Ich habe versucht, die fasterxml-Version auf ältere Codehaus-Version herabzustufen. Es funktioniert auch nicht. –