JSON输出Java

JSON输出Java,java,json,amazon-web-services,amazon-rds,Java,Json,Amazon Web Services,Amazon Rds,我正在编写一个RESTful API程序来部署在AWS上。我从程序中获得JSON输出。当我测试程序时,它返回的JSON输出与预期的输出不同。方向,大写和小写也不正确,因为我希望它是 预期产出: [ { "Username": "****", "UUID": "****", "Tenant_ID": "****", "Site_ID": "****" } ] 收到的输出: [ { "UUID": "****", "site_ID": "

我正在编写一个RESTful API程序来部署在AWS上。我从程序中获得JSON输出。当我测试程序时,它返回的JSON输出与预期的输出不同。方向,大写和小写也不正确,因为我希望它是

预期产出:

[
  {
    "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;
}

感谢每一位在这个问题上提供帮助的成员。

如果您只想包含更新版本的jackson(位于另一个项目中),您很有可能正在从较旧的
org.codehaus.jackson
包中导入jackson注释
@JsonProperty
注释
com.fasterxml.jackson
导入到您的项目中

检查旧版本“codehaus”的依赖项,并将其更新为仅引用新版本(此更改应与代码向前兼容)

然后尝试重建,看看它是否能按预期工作


请参见此处:

尝试将您的jackson注释降级到较旧的codehhaus版本。当这样的问题发生时,jersey使用的jackson版本和annotations版本就出现了混淆。由于您正在使用新注释,请使用旧注释。org.codehaus.jackson.annotate.JsonProperty

您需要更改RESTAPI中返回JSON的代码,或者接受该JSON并在您身边进行操作@上面的NitinDhomse是我在REST API中返回JSON的代码,我希望修改它以获得预期的输出,但我不知道在哪里修改它。你能在
数据
类的顶部发布你的导入吗?我怀疑您导入了一个稍有错误的注释,因此
@JsonProperty
无法达到预期效果。您好@RyanWeir我的导入是
import com.fasterxml.jackson.annotation.JsonProperty你好@谢谢你的回答。我试图将fasterxml版本降级为旧的codehhaus版本。它也不工作了@谢谢你的回复。我检查了我的pom.xml。我包括
com.fasterxml.jackson.core jackson注解2.3.2
。我也无法在pom.xml上找到任何“codehaus”。可能是另一个依赖项导致Jackson v1在构建时被拉入-请尝试在项目目录中运行
mvn dependency:tree
,并搜索对不同版本的任何引用,以查看是否存在这种情况。
@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;
    }
}