您的位置:首页 > Web前端 > JQuery

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

2016-09-02 00:58 981 查看
将对象转换为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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐