简体   繁体   English

Web服务错误返回JSON格式

[英]JSON format return in web service error

I can return a single object into json format from the returnMachineTable method. 我可以从returnMachineTable方法将单个对象返回为json格式。 But when i try to return all the objects from the Manufacturer table. 但是,当我尝试从Manufacturer表中返回所有对象时。 i cannot return it as json format. 我无法将其返回为json格式。 Any suggestions? 有什么建议么?

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

I think you should clean your code first. 我认为您应该先清理代码。 IE: you are declaring this variable and never using it. IE:您正在声明此变量,并且从不使用它。

JSONArray jsonArray = new JSONArray();

Secondly, why you put all the object properties to a big string? 其次,为什么将所有对象属性都放在一个大字符串上? Why not just add all objects to an array and then convert it to json array? 为什么不只是将所有对象添加到数组,然后将其转换为json数组呢?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM