后台 可以使用多种方式,将java对象转换为 json格式的字符串, 这里我们采用 Gson 工具类,需要先导入 Gson 的jar包,js中 通过 JSON.parse(str); 将json格式的字符串转为 js 对象。(json数)也可将java对象转为特定类型,需要自定义转换器,例如下面的 转换日期格式;
import java.util.Date;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import henu.lyj.entity.User;
import henu.lyj.util.MyGsonDateConverter;
public class GsonTest {
//json 字符串 对象 用{} 数组 集合 用 []
@Test //Gson 将java 对象转换为 json 字符串
public void test1(){
User user = new User(1,"liuyj","henu");
Gson gson = new Gson();
String userStr= gson.toJson(user); //一个简单的 User对象
System.out.println(userStr);
}
@Test //Gson 将 集合 转换为 json 字符串
public void test2(){
User user1 = new User(1,"liuyj1","henu1");
User user2 = new User(2,"liuyj2","henu2");
User user3 = new User(3,"liuyj3","henu3");
List<User> users = new ArrayList<User>();
users.add(user1);
users.add(user2);
users.add(user3);
Gson gson = new Gson();
String userStr= gson.toJson(users);
System.out.println(userStr);
}
@Test //对于特定类型的 转换 如 Date 实现Gson中规定的接口 进行自定义类型转换器
public void test3(){
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Date.class, new MyGsonDateConverter());
Gson gson = builder.create();
User user = new User(1,"liu","henu",new Date());
String jsonStr = gson.toJson(user);
System.out.println(jsonStr);
}
}
import java.lang.reflect.Type;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
public class MyGsonDateConverter implements JsonSerializer<Date>{
@Override
public JsonElement serialize(Date date, Type arg1, JsonSerializationContext context) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String fdate = sdf.format(date);
return new JsonPrimitive(fdate);
}
}
前台转换
<script>
function testJson(){
//json 格式
//对象 {"key":"value",---}
//集合["a","s","s"]
//对象集合 [{ },{},{}]
// var user = '{"id":1,"name":"liu","school":"henu"}';
//字符串 转化为 js 对象
var jsonUser = JSON.parse(user);
alert(jsonUser.id + " " + jsonUser.name + " " + jsonUser.school);
}
</script>