JSON输出Java
我正在编写一个RESTful API程序来部署在AWS上。我从程序中获得JSON输出。当我测试程序时,它返回的JSON输出与预期的输出不同。方向,大写和小写也不正确,因为我希望它是 预期产出: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": "
[
{
"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;
}
}