2017-05-11 5 views
2

AWSにデプロイするRESTful APIプログラムを作成しています。私はプログラムからJSON出力を取得しています。プログラムをテストすると、予想される出力と同じでないJSON出力が返されます。オリエンテーション、大文字、小文字は、私が望むとおりには正しくありません。JSON出力Java

予想される出力:受信

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

出力:

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

リソースコード:

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; 
} 

サービスコード:

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

データクラス:この質問に役立つすべてのメンバーのための

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; 
    } 
} 

感謝。

+0

JSONを返すための残りのAPIのコードを変更するか、JSONを受け入れて自分の側で操作する必要があります。 –

+0

こんにちは。 @NitinDhomse上記はJSONを返すためのREST APIのコードです。予想される出力を得るためにそれを変更したいのですが、どこを変更するのかわかりません。 –

+0

'Data'クラスの先頭にインポートを投稿できますか? '@ JsonProperty'があなたが期待していることをしないように、ちょっと間違ったアノテーションをインポートしていると思われます。 –

答えて

0

あなたのプロジェクトに(別のプロジェクトである)ジャクソンの唯一の新しいバージョンcom.fasterxml.jacksonを含むことがしたいときに、古いorg.codehaus.jacksonパッケージからジャクソン注釈@JsonProperty注釈を輸入しているの良いチャンスがあります。

古い "codehaus"バージョンの依存関係を確認し、新しいものを参照するように更新します(この変更はコードと上位互換性があります)。

次に、再構築を試して、期待どおりに動作するかどうかを確認してください。

はこちらをご覧ください:https://stackoverflow.com/a/30782762/808532

+0

こんにちは。 @ RyanWeirあなたの返事をありがとう。私はpom.xmlをチェックしました。私は '' \t \t com.fasterxml.jackson.core \t \t ジャクソン注釈 \t \t 2.3.2 \t \tが含まれています。私もpom.xmlに「codehaus」は見つかりませんでした。 –

+0

プロジェクトディレクトリに 'mvn dependency:tree'を実行し、別のバージョンへの参照を検索して、そうであるかどうかを調べるために、別の依存関係によってJackson v1がビルド時に引き込まれる可能性があります。 –

0

は古いcodehhausバージョンにあなたのジャクソンの注釈をダウングレードしてみます。このような問題が発生した場合、ジャージーとアノテーションのバージョンで使用されているジャックソンのバージョンが混在しています。新しい注釈を使用しているので、古い注釈を使用してください。 org.codehaus.jackson.annotate.JsonProperty

+0

こんにちは。 @eDogあなたの答えをありがとう。私は、fastxmlバージョンを古いcodehhausバージョンにダウングレードしようとしました。それはまた働いていません。 –