Hibernate查询的数据转换成json

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate查询的数据转换成json相关的知识,希望对你有一定的参考价值。

我们使用Hibernate查询的数据,比如'select t.time,t.id,t.name from Stu t';
得到的应该是一个Object[]的List,里面的值的类型是不确定的;
然后用Gson转换成字符串传给客户端后怎么反转换成list???

哥们啊,同病相怜啊,这两天。。。。我。。。哎。。。
用hibernate查出来的数据只是一连串的字符串,根本就不是键值对的形式,我一个同学,做的项目用的是ibatis做的数据库持久层,那个查出来 然后JSONArray.fromObject(list),就直接转换成了json格式的数据,我一直以为我项目里其他的代码错了,搞了两天,浪费了我好多时间
如果是正确的json数据格式,传给客户端就是下面的代码
Long total = loginBiz.getTotal(); //记录总数
JSONArray json = JSONArray.fromObject(list);
getResponse().setContentType("application/json;charset=utf-8");
getResponse().setHeader("cache-control", "no-cache");
str = "\"total\":"+ total + ",\"rows\":" + json + "";
PrintWriter out = getResponse().getWriter();
out.write(str);
return null;//虽然是空值但是一定要有返回值,这个值随便写
参考技术A 如果不用ajax的话,你完全可以在jsp上面展示你的list数据。没必要用json啊,一般用json都是涉及到了ajax,在你的action用jsonUtil将list转换成json字符串,在ajax的回调函数用eval(json字符串)解析成js object,js里面只会看做是object数组。 参考技术B 你想用Ajax?追问

不是,只是单纯的Servlet用于传输数据,但是list转换成json传送给客户端后不知道该怎么反转换成list??

追答

这个我也没用过 我倒是在页面用javascript的eval()函数解析过Json数据,然后再动态放到页面

.net 数据表转换成json

比如我通过查询在ASHX里面获得了一个表叫DT,怎么把这个DT转换成JSON类型的数据传给前台页面?然后前台js怎么使用这个传过去的json数据呢?就获得这个数据的第一条记录就好。。

Dt转换成Json一般可以通过以下的步骤来方便的转换
首先对应表做一个实体类,该类标记可序列化
首先查询数据库获取表数据(比如获取了一条)
编译该条记录实例化表实体类并根据字段名赋值
直接按照json格式序列化该实体类就获取了Json格式的数据(如果需要多条数据只需要一个List,然后序列化那个List就可以了)
下面这个我以前做的东西,核心就是将DT转换成实体类集合
/// <summary>
/// DataTable转换为List<Model>的通用类
/// </summary>
/// <typeparam name="T"><Model类型/typeparam>
public static IList<T> ConvertToModel(DataTable dt)

// 定义集合
IList<T> ts = new List<T>();
// 获得此模型的类型
Type type = typeof(T);
string tempName = "";
foreach (DataRow dr in dt.Rows)

T t = new T();
// 获得此模型的公共属性
PropertyInfo[] propertys = t.GetType().GetProperties();
foreach (PropertyInfo pi in propertys)

tempName = pi.Name;
//string objType = pi.PropertyType.Name;
// 检查DataTable是否包含此列
if (dt.Columns.Contains(tempName))

// 判断此属性是否有Setter
if (!pi.CanWrite) continue;
object value = dr[tempName];
if (value != DBNull.Value)

if (value is DateTime) value = value.ToString();
pi.SetValue(t, value, null);

else

if (value is DateTime) value = value.ToString();
if (value is String)
pi.SetValue(t, value.ToString(), null);



ts.Add(t);

return ts;


/// <summary>
/// 序列化对象
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static string JSSerialize(object data)

System.Web.Script.Serialization.JavaScriptSerializer ser = new System.Web.Script.Serialization.JavaScriptSerializer();
return ser.Serialize(data);


前台使用Json只需要反序列化话成对象,然后就像获取对象属性一样使用了,
你到百度上搜索序列化反序列化看看应该就明白了。
希望能帮到你……
参考技术A 可以写自定义方法,通过遍历DT来构造JSON的字符串,最好的直接使用json.net类,去网上搜就有了,很方便的。 参考技术B

以上是关于Hibernate查询的数据转换成json的主要内容,如果未能解决你的问题,请参考以下文章

hibernate sql查询后对象转换成实体类

查询Mysql表之后将结果转换为json时如何能够保持字段的原有数据类型?

查询复杂对象用respsbody转换成json串时,mybatis的延迟加载报错的解决方法

如何用java实现list转换成json格式

将数据库中查询的结果转换为json, 然后调用接口的方式返回json

DataTable 转换成 Json的3种方法