【问题标题】:JSON format return in web service errorWeb 服务错误中的 JSON 格式返回
【发布时间】:2015-09-09 11:41:01
【问题描述】:

我可以通过 returnMachineTable 方法将单个对象返回为 json 格式。但是当我尝试从制造商表中返回所有对象时。我不能将它作为 json 格式返回。有什么建议吗?

@Path("/test")
public class testWS {
// private static final String api_version = "00.01.00";

@GET
@Path("/database")
// @Produces(MediaType.TEXT_PLAIN)
@Produces(MediaType.APPLICATION_JSON)
public Machine returnMachineTable() throws Exception {
    // public String returnDatabaseStatus() throws Exception{

    PreparedStatement query = null;
    String myString = "";
    String returnString = null;
    Connection conn = null;
    Machine u = null;
    // returnString = "<p>data base context: "+"shit ass"+"</p>";

    try {
        conn = db.DBConn().getConnection();
        query = conn.prepareStatement("SELECT * FROM MACHINE");
        ResultSet rs = query.executeQuery();

        while (rs.next()) {
            myString = myString + rs.getString("LOCATION") + "!!!!!"
                    + rs.getInt("MACHINEID") + "!!!!!"
                    + rs.getInt("MACHINEID");

            Long maintainenceDate = rs.getDate("MAINTDATE").getTime();
            Long dateInstalled = rs.getDate("DATEINSTALLED").getTime();
            u = new Machine();
            u.setMachineId(rs.getInt("MACHINEID"));
            u.setLocation(rs.getString("LOCATION"));
            u.setMaintainenceDate(maintainenceDate);
            u.setDateInstalled(dateInstalled);
            u.setInstaller(rs.getString("INSTALLER"));
            u.setMachineCode(rs.getString("MACHINECODE"));
            u.setModel(rs.getString("MODEL"));
            u.setManufacturerID(rs.getString("MANUFACTURERID"));
            u.setName(rs.getString("NAME"));
            u.setSoftware(rs.getString("SOFTWARE"));

            myString = u.toString();
        }

        returnString = "---" + myString + "---\n";
        query.close();

    } catch (Exception e) {
        e.printStackTrace();

    } finally {
        if (conn != null)
            conn.close();

    }

    // return returnString;
    return u;
}

@GET
@Path("/ManufacturerTable")
@Produces(MediaType.APPLICATION_JSON)
public List<Manufacturer>  returnManufacturerTable() throws Exception {

    PreparedStatement query = null;
    String myString = "";
    String returnString = null;
    Connection conn = null;
    Manufacturer u = null;
    List<Manufacturer> ulist = null;
    int i = 0;
    String uList = "";

    try {
        conn = db.DBConn().getConnection();
        query = conn.prepareStatement("SELECT * FROM MANUFACTURER");
        ResultSet rs = query.executeQuery();
        JSONArray jsonArray = new JSONArray();

        while (rs.next()) {
            myString = myString + rs.getString("MANUFACTURERNAME")
                    + "!!!!!" + rs.getInt("MANUFACTURERID");

            u = new Manufacturer();
            u.setManufacturerName(rs.getString("MANUFACTURERNAME"));
            u.setManufacturerId(rs.getInt("MANUFACTURERID"));
            ulist.add(i, u);
            i++;

            myString = myString+"\n"+u.toString();

        }

        returnString = "---" + myString + "---\n";
        query.close();

    } catch (Exception e) {
        e.printStackTrace();

    } finally {
        if (conn != null)
            conn.close();

    }

    // return returnString;
    /* Gson gson = new Gson();
    return gson.toJson(ulist);*/
    return ulist;
}
}

【问题讨论】:

  • 我现在要做的是使用 toString 方法以 json 格式显示数据。不过我不想用这个方法
  • 为什么不返回相同的对象列表
  • 我做了,它显示一个错误
  • 它显示了什么错误?
  • 我还没有查看日志。但是连url都加载不出来

标签: java json web-services


【解决方案1】:

我认为你应该先清理你的代码。 IE:你声明了这个变量并且从不使用它。

JSONArray jsonArray = new JSONArray();

其次,为什么要将所有对象属性都放在一个大字符串中?为什么不直接将所有对象添加到数组中,然后将其转换为 json 数组?

【讨论】:

  • 我可以将所有对象添加到数组列表中。然后我就输了。不确定如何将对象列表转换为 jsonarray
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-22
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 1970-01-01
  • 2011-01-26
相关资源
最近更新 更多