对象转换为JSON数据格式&使用JQuery获取数据

将对象转换为JSON数据格式
      我们需要json-lib-2.3-jdk15.jar架包(当然还需要其它架包),来实现对象转JSON数据格式。此架包提供两个类来实现转换,JSONObject.fromObject(object);将对象转换成json数据格式;JSONArray.fromObject(object);将数组转换成json数据格式。
         注意:在json数据格式中你可能会看到使用{ }与[ ] 包裹的数据,这里{ }包裹的是对象或者Map对象,而[ ]包裹的则是数组或List集合。


下面我们来一个例子:
        我们有一个实体类为Users,其中有username属性和password属性
public class Users {

    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 Users(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public Users() {
    }
}
下面我们使用代码来实现转换
        Users users = new Users("张三", "q123");

        //将Users对象转换为JSONObject
        JSONObject jsonObject = JSONObject.fromObject(users);

        //使用JSONObject的toString()方法将JSONObject转换成字符串
        System.out.println( "users:" + jsonObject.toString() );


        List<String> listStr = new ArrayList<String>(0);
        listStr.add("小明");
        listStr.add("小红");
        JSONArray jsonListStr = JSONArray.fromObject(listStr);
        System.out.println( "jsonListStr:" + jsonListStr.toString() );

        List<Users> listUsers = new ArrayList<Users>(0);
        listUsers.add(new Users("大名", "123"));
        listUsers.add(new Users("大红", "456"));
        JSONArray jsonListUsers = JSONArray.fromObject(listUsers);
        System.out.println( "jsonListUsers:" + jsonListUsers.toString() );



        Map<String, String> mapStr = new HashMap<String, String>(0);
        mapStr.put("彩虹", "彩彩");
        mapStr.put("豆豆", "小豆");
        JSONObject jsonMapStr = JSONObject.fromObject(mapStr);
        System.out.println( "jsonMapStr:" + jsonMapStr.toString() );


        Map<String, Users> mapUser = new HashMap<String, Users>(0);
        mapUser.put("1", new Users("小彩虹", "123"));
        mapUser.put("2", new Users("小豆豆", "123"));
        JSONObject jsonMapUser = JSONObject.fromObject(mapUser);
        System.out.println( "jsonMapUser:" + jsonMapUser.toString() );
注意:请看好是用那种方式转换的

输出结果
users:{"password":"q123","username":"张三"}
jsonListStr:["小明","小红"]
jsonListUsers:[{"password":"123","username":"大名"},{"password":"456","username":"大红"}]
jsonMapStr:{"彩虹":"彩彩","豆豆":"小豆"}
jsonMapUser:{"1":{"password":"123","username":"小彩虹"},"2":{"password":"123","username":"小豆豆"}}
上面解释两个输出
  1.jsonListUsers:说明list集合中包含两个对象
  2.jsonMapUser:Map集合是按对象形式输出的,我们可以将键看成是对象中的属性。

注:
   在返回json数据的时候要注意,如果你是直接写成这样是不行

        response.getWriter().print(jsonListStr.toString());
        response.getWriter().print(jsonListUsers.toString());
        response.getWriter().print(jsonMapStr.toString());
        response.getWriter().print(jsonMapUser.toString());
这样的话无法在前台中获取数据(我这样是不行的),对于这种情况有两种解决方案
第一种:

        String test = "[" + jsonListStr.toString() + "," +
                jsonListUsers.toString() + ","+
                jsonMapStr.toString() + "," + jsonMapUser.toString() + "]";
手动拼接成一个数字,取值使用下标取,取出来的值是对象还是数组,这取决于你的值。

第二种:
        Map<String, Object> result = new HashMap<String, Object>(0);
        result.put("jsonListStr", jsonListStr);
        result.put("jsonListUsers", jsonListUsers);
        result.put("jsonMapStr", jsonMapStr);
        result.put("jsonMapUser", jsonMapUser);
        result.put("users", jsonObject);

        JSONObject jsonResult = JSONObject.fromObject(result);
        System.out.print(jsonResult.toString());
        response.getWriter().print(jsonResult.toString());
这种方式是创建了一个Map集合把数据都放进集合中,然后将集合转换成json对象,取值的时候需要通过键来取值,取出来的值是对象还是数组,这取决于你的值。

重点注意:JSON是对象

      我用的是谷歌浏览器,按F12可以进入调试界面,当我们返回的JSON格式正确&你设置的dataType为json的时候会显示如下信息,这说明正确。

       当我们没有设置dataType属性,或属性设置错误会出现或不出现如下界面(说白了就是给你一个字符串),这说明是错误的

如果一直获取不到数据,大家需要注意一下这里。


下面我们使用jquery在jsp页面输出这些值
<script>

  $(function () {
    $.ajax({
      type:"POST",
      dataType:"JSON",
      url:"/jsonServlet",
      success:function(data){

        var text = "获取jsonListStr下的所有元素<br/>";//用来保存输出信息

        for(var key in data.jsonListStr){
          text += data.jsonListStr[key] + "<br/>";
        }

        text += "<br/>获取jsonListUsers下的所有元素<br/>";
        for(var key in data.jsonListUsers){
          text += "username" + data.jsonListUsers[key].username + "password" + data.jsonListUsers[key].password + "<br/>";
        }

        text += "<br/>获取jsonMapStr下的所有元素,因为是Map集合所以要通过键来获取值<br/>";
        for(var key in data.jsonMapStr){
          text += data.jsonMapStr[key] + "<br/>";
        }

        text += "<br/>获取jsonMapUser下的所有元素,因为是Map集合所以要通过键来获取值<br/>";
        for(var key in data.jsonMapUser){
          text += "username" + data.jsonMapUser[key].username + "password" + data.jsonMapUser[key].password + "<br/>";
        }

        text += "<br/>获取users下的所有元素,因为是Map集合所以要通过键来获取值<br/>";
        text += "username" + data.users.username + "<br/>";
        text += "password" + data.users.password + "<br/>";


        $("#json_info").html(text);
      }
    });
  });


</script>
输出结果
获取jsonListStr下的所有元素
小明
小红

获取jsonListUsers下的所有元素
username大名password123
username大红password456

获取jsonMapStr下的所有元素,因为是Map集合所以要通过键来获取值
彩彩
小豆

获取jsonMapUser下的所有元素,因为是Map集合所以要通过键来获取值
username小彩虹password123
username小豆豆password123

获取users下的所有元素,因为是Map集合所以要通过键来获取值
username张三
passwordq123


javascript变量转JSON

如果在javascript中自己定义了一个json数据
如:var json = '{"1":{"password":"123","username":"小彩虹"},"2":{"password":"123","username":"小豆豆"}}';
则需要使用
var parse = $.parseJSON(json);方法来将json变量中的值转换成JSON对象,因为不适用此方法,json变量中存在的值为字符串。


此笔记代码
http://download.csdn.net/detail/gxy1317/9619516



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值