首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON输出Java

JSON输出Java
EN

Stack Overflow用户
提问于 2017-05-11 13:18:43
回答 2查看 107关注 0票数 2

我正在编写一个AWS应用程序接口程序来部署在RESTful上。我正在从程序中获得JSON输出。当我测试程序时,它返回的JSON输出与预期输出不同。方向,大小写也不像我想的那样正确。

预期输出:

代码语言:javascript
复制
[
  {
    "Username": "****",
    "UUID": "****",
    "Tenant_ID": "****",
    "Site_ID": "****"
  }
]

接收的输出:

代码语言:javascript
复制
[
  {
    "UUID": "****",
    "site_ID": "****",
    "tenant_ID": "****",
    "userName": "****"
  }
]

资源代码:

代码语言:javascript
复制
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;
}

服务代码:

代码语言:javascript
复制
@Produces(MediaType.APPLICATION_JSON)
@GET
@Path("/v2")
public List<Data> getData(){
    return ds.getData();
}

数据类:

代码语言:javascript
复制
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;
    }
}

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

EN

回答 2

Stack Overflow用户

发布于 2017-05-11 13:52:12

当您只想在项目中包含较新版本的jackson (在不同的项目中) @JsonProperty时,您很有可能从旧的org.codehaus.jackson包中导入jackson批注com.fasterxml.jackson批注。

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

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

查看此处:https://stackoverflow.com/a/30782762/808532

票数 0
EN

Stack Overflow用户

发布于 2017-05-11 14:05:27

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43907081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档