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

javascript对象和json字符串之间转换的问题

2018-10-12 13:03 537 查看

 

在开发中,当使用ajax向后端发送请求返回一个json时,有两个可能,一种是返回json字符串,一种是返回object。

javascript中有两个方法可以用来处理两者之间的互相转换问题:

  • JSON.parse(string) :接受一个 JSON 字符串并将其转换成一个 JavaScript 对象。

  • JSON.stringify(obj) :接受一个 JavaScript 对象并将其转换为一个 JSON 字符串。

此时我们定义一个ResultInfo实体类

[code]package com.itheima.domain;

import java.io.Serializable;
import java.util.Objects;

/**
* 用于封装后端返回前端数据对象
*/
public class ResultInfo implements Serializable {
private boolean flag;//后端返回结果正常为true,发生异常返回false
private Object data;//后端返回结果数据对象
private String errorMsg;//发生异常的错误消息

//无参构造方法
public ResultInfo() {
}
public ResultInfo(boolean flag) {
this.flag = flag;
}
/**
* 有参构造方法
* @param flag
* @param errorMsg
*/
public ResultInfo(boolean flag, String errorMsg) {
this.flag = flag;
this.errorMsg = errorMsg;
}
/**
* 有参构造方法
* @param flag
* @param data
* @param errorMsg
*/
public ResultInfo(boolean flag, Object data, String errorMsg) {
this.flag = flag;
this.data = data;
this.errorMsg = errorMsg;
}

public boolean isFlag() {
return flag;
}

public void setFlag(boolean flag) {
this.flag = flag;
}

public Object getData() {
return data;
}

public void setData(Object data) {
this.data = data;
}

public String getErrorMsg() {
return errorMsg;
}

public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}
}

定义一个TestServlet测试类

[code]        //创建json格式的字符串
String allCategory="[{"cid":8,"cname":"全球自由行"},{"cid":5,"cname":"国内游"}];
resultInfo=new ResultInfo(true,allCategory,null);
//创建json转换类
ObjectMapper objectMapper = new ObjectMapper();
//将ResultInfo对象转为json字符串
String jsonData=objectMapper.writeValueAsString(resultInfo);
response.getWriter().write(jsonData);
  • 将一个json格式的字符串加入到ResultInfo对象中,再把该对象转为json字符串发送给ajax请求的页面。页面获取的ResultInfo对象为object对象,可以直接使用。而要使用该对象里的allCategory属性的话,需要把allCategory转为javascript对象。页面获取的ResultInfo对象的其它属性为object对象,可以直接使用。
[code]var categoryList=JSON.parse(resultInfo.data);
  • 也可以使用javascript的内置对象转为javascript对象
[code]var categoryList = eval("("+resultInfo.data+")");

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: