2 jingtanchenfen70 jingtanchenfen70 于 2016.04.20 14:05 提问

请问下面语句怎么将查询出来的很多users实体对象发给客户端,使用json总是错误,

String jpql = "SELECT u FROM User u WHERE u.name = :name";
Query query = em.createQuery(jpql);
List users = query.getResultList();
怎么得到每个list中的User

3个回答

w172087242
w172087242   Ds   Rxr 2016.04.20 14:15
已采纳

用json是最好的,当然也可以使用user的序列化,只是java的序列化相对来说要慢一点,而且可移植性不高。

json出错可能是你的json格式有问题,如果不想用工具,最好是重写user的tostring方法,
在tostring中把每个user组成json对象,这时候调用list的tostring方法,得到的将是一个标准的json。

json出错有时候可能是因为错误的进行了序列化(转移特殊字符如")。

affeds
affeds   2016.04.20 14:26

//查询结果转JSon
public String resultSetToJson(ResultSet rs) throws SQLException,JSONException

{

// json数组

JSONArray array = new JSONArray();

     // 获取列数  
     ResultSetMetaData metaData = rs.getMetaData();  
     int columnCount = metaData.getColumnCount();  

     // 遍历ResultSet中的每条数据  
      while (rs.next()) {  
          JSONObject jsonObj = new JSONObject();  
           String id = rs.getInt("id")+"";
           jsonObj.put("id", id); 
          // 遍历每一列  
          for (int i = 2; i <= columnCount; i++) {  
              String columnName =metaData.getColumnLabel(i);  
              String value = rs.getString(columnName);
              if (value!=null) {
                  jsonObj.put(columnName, value);  
            } else {
                jsonObj.put(columnName, "");
            }
          }   
          array.put(jsonObj);   
      }  

     return array.toString();  
  } 

}
我这么写的,好像可以用

baidu_23086307
baidu_23086307   2016.05.01 23:47

可以用webservice,也可以用json,不过json方便,webservice也还行,解析起来也方便,我有webservice解析工具类,一行代码全搞定!要的话联系我

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!