JavaBean,List,Map转成json格式

http://www.cnblogs.com/wuyun-blog/p/5752583.html  原文链接

http://www.cnblogs.com/rah123/p/3969758.html  原文链接

 

申明:没工作之前都没听过JSON,可能是自己太菜了。可能在前台AJAX接触到JSON,这几天要求在纯java的编程中,返回JSON字符串形式。

网上有两种解析JSON对象的jar包:JSON-lib.jar和json.jar,这里主要介绍JSON-lib.jar。

jar包地址如下:

json-lib-2.4-jdk15.jar所需全部JAR包.rar

一、JSON-lib.jar还依赖以下jar包:

  1. commons-lang.jar
  2. commons-beanutils.jar
  3. commons-collections.jar
  4. commons-logging.jar 
  5. ezmorph.jar
  6. json-lib-2.2.2-jdk15.jar

二、应用

  JSON也是以key-value形式存在的。key是字符串,value可以是基本类型、JSONArray、JSONObject.

  JSONArray:[],望文生义也知道,他是数组形式,又可要放多个JSON

  JSONObject:{}就放一个JSON。

  由于他们的他们可以嵌套形式就比较多。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<br>public class User { 
       
    private String username; 
    private String password; 
       
    public String getUsername() { 
        return username; 
    
    public void setUsername(String username) { 
        this.username = username; 
    
    public String getPassword() { 
        return password; 
    
    public void setPassword(String password) { 
        this.password = password; 
    
       
}

  

注意!!进行转换的类一定要是public类型的,否则会报如下错误:.TemplateModelException: Method public java.lang.String org.apache.commons.lang.exception.NestableRuntimeException.getMessage(int) threw an exception when invoked onnet.sf.json.JSONException: java.lang.NoSuchMethodException: Property 'contents' has no getter method in class 'class com.yesrj.plm2.workflow.action.WorkflowDesignAction$FlowViewNode'

 

1 普通JavaBean(以User为例)转成json格式 

1).转成JSONArray类型 
User user = new User(); 
user.setUsername("cxl"); 
user.setPassword("1234"); 
JSONArray json = JSONArray.fromObject(user); 
System.out.println(json);//[{"password":"1234","username":"cxl"}] 
response.getWriter().print(json.toString()); 
在js文件取数据 
$.getJSON("http://localhost:8080/jQueryDemo/servlet/UserServlet",null,function(data) { 
      alert(data[0].username); 
      alert(data[0].password); 
}); 


2).转成JSONObject类型 
JSONObject jsonObj = JSONObject.fromObject(user); 
System.out.println(jsonObj);//{"password":"1234","username":"cxl"} 
response.getWriter().print(jsonObj); 
在js文件取数据 
alert(data.username); 
alert(data.password); 

 


2 List转成json格式 


List<User> users = new ArrayList<User>(); 
User user = new User(); 
user.setUsername("cxl"); 
user.setPassword("1234"); 
User u = new User(); 
u.setUsername("lhl"); 
u.setPassword("1234"); 
users.add(user); 
users.add(u); 


1).转成JSONArray类型 
JSONArray json = JSONArray.fromObject(users); 
System.out.println(json.toString()); 
//[{"password":"1234","username":"cxl"},{"password":"1234","username":"lhl"}] 
response.getWriter().print(json.toString()); 
js中取数据:alert(alert(data[0].username)); 


2).转成JSONObject类型 
不可直接使用JSONObject jsonObj = JSONObject.fromObject(users); 
可通过下列方式 
JSONObject jsonObj = new JSONObject(); 
jsonObj.put("users", users); 
jsonObj.put("u", u); 
System.out.println(jsonObj); 
{"users":[{"password":"1234","username":"cxl"},{"password":"1234","username":"lhl"}], 
  "u":{"password":"1234","username":"lhl"}} 
response.getWriter().print(jsonObj); 
js中取数据:alert(data.users[0].username); 
           alert(data.u[0].username); 


3.Map转成json格式 


Map<String,Object> map = new HashMap<String,Object>(); 
map.put("users", users); 
map.put("u", u); 
1).转成JSONArray类型 
JSONArray json = JSONArray.fromObject(map); 
System.out.println(json.toString());// 
[{"users":[{"password":"1234","username":"cxl"},{"password":"1234","username":"lhl"}],"u":{"password":"1234","username":"lhl"}}] 
response.getWriter().print(json.toString); 
js中取数据:alert(data[0].users[0].username); 


2).转成JSONObject类型 
JSONObject json = JSONObject.fromObject(map); 
System.out.println(json);// 
{"user":[{"password":"1234","username":"cxl"},{"password":"1234","username":"lhl"}],"u":{"password":"1234","username":"lhl"}} 
response.getWriter().print(json); 
js中取数据:alert(data.user[0].username); 

posted @ 2017-09-05 10:30  晓容晓枫  阅读(487)  评论(0)    收藏  举报