导入Google的包gson-2.2.4.jar。
然后实例化Gson
static Gson gosn = new Gson();。
String json = gosn.toJson(hashMap); //这里放一个对象,什么对象都可以。
转化后就是Json,功能强大很多,也简单很多。
json-lib-2.4-jdk15.jar。
ezmorph-1.0.6.jar 。
转换的话这样用
String s= JSONArray.fromObject(user).toString();。
spring-webmvc4
在方法上加入@ResponseBody,同时方法返回值为实体对象,spring会自动将对象转换为json格式,并返回到客户端。
可以通过jsonObject作为中间转换桥梁,先把你的list转换为jsonObject,然后jsonObject toString(),即可转换为json字符串。但是过于复杂的map对象貌似不行,这样你就只有自己写了。
有两种方法实现:
(1)直接转换:
创建JSONArray对象、JSONObject对象,通过put方法将其数据以键值对的形式填充,如例:
//假如有一个Java实体类Person,包括以下属性:phone、sex、married、address。
ArrayList<Person> persons = new ArrayList<Person>();。
for (int i = 0; i < 3; i++) {。
persons.add(new Person("138******67", "女", true, "北京朝阳区"));//填充Java实体类集合。
JSONArray array = new JSONArray();// Json格式的数组形式。
JSONObject obj;//json格式的单个对象形式。
for (int i = 0; i < persons.size(); i++) {。
obj = new JSONObject();。
//依次填充每一个Java实体对象。
try {
obj.put("phone", persons.get(i).getPhone());//json通过put方式以key-value形式填充。
obj.put("sex", persons.get(i).getSex());。
obj.put("married", persons.get(i).getMarried());。
obj.put("address", persons.get(i).getAddress());。
array.put(obj);//将JSONObject添加入JSONArray。
} catch (JSONException e) {。
e.printStackTrace();。
}
}
(2)通过GSON工具实现:
只需要创建GSON对象,通过toJson方法转换即可。如例:
//模拟Java数据
Person person = new Person("敏敏", 23, "女", "北京市海淀区");。
//创建GSON对象
Gson gson = new Gson();。
//调用toJson方法即可转换为字符串的json格式。
String json = gson.toJson(person);。
用Gson这个类库可以帮你解决,但是带泛型的集合必须要指定你的javaBean,(指定实体类)。
String json = json字符串;。
Set<你的实体类> set = new Gson().fromJson(json,new TypeToken<List<你的实体类>>() {}.getType());。
记得导入jar包
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只需要反序列化话成对象,然后就像获取对象属性一样使用了,
你到百度上搜索序列化反序列化看看应该就明白了。
希望能帮到你……