Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有一种方便的方法将多个ArrayList打包到一个JsonArray中?_Java_Json_Arraylist - Fatal编程技术网

Java 有没有一种方便的方法将多个ArrayList打包到一个JsonArray中?

Java 有没有一种方便的方法将多个ArrayList打包到一个JsonArray中?,java,json,arraylist,Java,Json,Arraylist,我正在尝试设置一个webapp,通过JSON发送数据库表。我想不费吹灰之力把所有的参赛作品都寄出去。因此,我将所有字段读取为ArrayList,现在我可以通过JSON逐个解析并发送它们。但是,难道没有一种方便的方法将它们全部打包到一个JsonArray中吗 下面是我的代码示例: public static JSONArray[] getDBEntries(String tablename) { JSONArray[] js = new JSONArray[5]; Connecti

我正在尝试设置一个webapp,通过JSON发送数据库表。我想不费吹灰之力把所有的参赛作品都寄出去。因此,我将所有字段读取为ArrayList,现在我可以通过JSON逐个解析并发送它们。但是,难道没有一种方便的方法将它们全部打包到一个JsonArray中吗

下面是我的代码示例:

public static JSONArray[] getDBEntries(String tablename) {
    JSONArray[] js = new JSONArray[5];
    Connection conn = null;
    Statement st = null;
    ResultSet rs = null;
    ArrayList<String> text = null;
    ArrayList<String> altname = null;
    ArrayList<String> altname2 = null;
    ArrayList<String> icd10 = null;
    ArrayList<String> alphaid = null;
    int index = 0;
    try {
        InitialContext ctx = new InitialContext();
        DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/users");
        conn = ds.getConnection();
        st = conn.createStatement();
        rs = st.executeQuery("SELECT * FROM " + tablename);
        while (rs.next()) {
            text.add(rs.getString("text"));
            if (altname != null) {
                altname.add(rs.getString("altname"));
            }
            if (altname2 != null) {
                altname2.add(rs.getString("altname2"));
            }
            if (icd10 != null) {
                icd10.add(rs.getString("icd10"));
            }
            if (alphaid != null) {
                alphaid.add(rs.getString("alphaid"));
            }
            index++;
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    } finally {
        try {
            if (rs != null) rs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if (st != null) st.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if (conn != null) conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    js[0] = new JSONArray(text);
    js[1] = new JSONArray(altname);
    js[2] = new JSONArray(altname2);
    js[3] = new JSONArray(icd10);
    js[4] = new JSONArray(alphaid);
    return js;
}
publicstaticjsonarray[]getDBEntries(stringtablename){
JSONArray[]js=新的JSONArray[5];
连接conn=null;
语句st=null;
结果集rs=null;
ArrayList text=null;
ArrayList altname=null;
ArrayList altname2=null;
ArrayList icd10=null;
ArrayList alphaid=null;
int指数=0;
试一试{
InitialContext ctx=新的InitialContext();
DataSource ds=(DataSource)ctx.lookup(“java:comp/env/jdbc/users”);
conn=ds.getConnection();
st=conn.createStatement();
rs=st.executeQuery(“从”+表名中选择*);
while(rs.next()){
text.add(rs.getString(“text”);
if(altname!=null){
添加(rs.getString(“altname”);
}
if(altname2!=null){
altname2.add(rs.getString(“altname2”);
}
如果(icd10!=null){
icd10.add(rs.getString(“icd10”);
}
if(alphaid!=null){
alphaid.add(rs.getString(“alphaid”);
}
索引++;
}
}捕获(例外情况除外){
例如printStackTrace();
}最后{
试一试{
如果(rs!=null)rs.close();
}捕获(SQLE异常){
e、 printStackTrace();
}
试一试{
如果(st!=null)st.close();
}捕获(SQLE异常){
e、 printStackTrace();
}
试一试{
如果(conn!=null)连接关闭();
}捕获(SQLE异常){
e、 printStackTrace();
}
}
js[0]=新的JSONArray(文本);
js[1]=新的JSONArray(altname);
js[2]=新的JSONArray(altname2);
js[3]=新的JSONArray(icd10);
js[4]=新的JSONArray(字母ID);
返回js;
}

您可以尝试在POJO中添加表数据。然后可以使用Gson将其转换为JsonArray

 class AplPojo {
    private String text;
    private String altname;
    private String altname;
    private String icd10;
    private String alphaid;

     //getter and setters
  }
  public static String getDBEntries(String tablename) {

    Connection conn = null;
    Statement st = null;
    ResultSet rs = null;
    ArrayList<AplPojo> aplPojos = new ArrayList<AplPojo>();
    int index = 0;
    try {
        InitialContext ctx = new InitialContext();
        DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/users");
        conn = ds.getConnection();
        st = conn.createStatement();
        rs = st.executeQuery("SELECT * FROM " + tablename);
        while (rs.next()) {
            AplPojo  aplPojo= new AplPojo();
            aplPojo.setText(rs.getString("text"));
            aplPojo.setAltname(rs.getString("altname"));
            aplPojo.setAltname2(rs.getString("altname2")); 
            aplPojo.setIcd10(rs.getString("icd10")); 
            aplPojo.setAlphaid(rs.getString("alphaid"));
            index++;
            aplPojos.add(aplPojo);
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    } finally {
        try {
            if (rs != null) rs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if (st != null) st.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if (conn != null) conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    } 
     // create a new Gson instance
     Gson gson = new Gson();
     // convert your list to jsonArray
     String aplPojosList = gson.toJson(aplPojos);
     return aplPojos;
}
AplPojo类{ 私有字符串文本; 私有字符串名称; 私有字符串名称; 专用字符串icd10; 私有字符串字母ID; //二传手 } 公共静态字符串getDBEntries(字符串表名){ 连接conn=null; 语句st=null; 结果集rs=null; ArrayList aplPojos=新的ArrayList(); int指数=0; 试一试{ InitialContext ctx=新的InitialContext(); DataSource ds=(DataSource)ctx.lookup(“java:comp/env/jdbc/users”); conn=ds.getConnection(); st=conn.createStatement(); rs=st.executeQuery(“从”+表名中选择*); while(rs.next()){ AplPojo AplPojo=新AplPojo(); setText(rs.getString(“text”); aplPojo.setAltname(rs.getString(“altname”)); aplPojo.setAltname2(rs.getString(“altname2”); aplPojo.setIcd10(rs.getString(“icd10”); setAlphaid(rs.getString(“alphaid”); 索引++; aplPojo.add(aplPojo); } }捕获(例外情况除外){ 例如printStackTrace(); }最后{ 试一试{ 如果(rs!=null)rs.close(); }捕获(SQLE异常){ e、 printStackTrace(); } 试一试{ 如果(st!=null)st.close(); }捕获(SQLE异常){ e、 printStackTrace(); } 试一试{ 如果(conn!=null)连接关闭(); }捕获(SQLE异常){ e、 printStackTrace(); } } //创建一个新的Gson实例 Gson Gson=新的Gson(); //将列表转换为jsonArray 字符串aplPojosList=gson.toJson(aplPojos); 返回aplPojos; }
不要使用JSONArray[5],只需使用JSONArray及其元素即可。然后返回一个JSONArray,其中包含作为元素的每个数组。@KDM我不太确定是否正确:如何将
ArrayList
作为元素添加到
JSONArray
?有没有办法将多个JSONArray添加到单个JSONArray(嵌套)?
JSONArray js=new JSONArray();添加(新的JSONArray(文本))等应该可以工作。JSONArray可以包含所有原语以及任何其他JSON对象。感谢您的解释,现在它的可重用性、简单明了的解决方案变得清晰1只是if语句现在已经过时了,我编辑过,我正在疯狂地从JSON解析它,我想它应该可以与
ArrayList entries=gson.fromJson一起使用(jsonString,ArrayList.class)
,但似乎我必须对每个AplPojo元素进行迭代,或者我遗漏了什么?…已经找到了:
ArrayList entries=gson.fromJson(jsonString,new-TypeToken(){}.getType());
:-)