spring mvc 对已经是json字符串的数据如何?

火化十 发布于 2016/04/18 18:29
阅读 1K+
收藏 0

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

虽然用spring mvc 输出json很方便,但发现有个情况是,总是需要一个实体对象来做为数据的载体才行。如果我已经有一个现成的json字符串了,比如在数据中已经存好了一个转换好的json结果,那应该怎么输出??按即有的设置,输出的会是带上引号的,比如:
@RequestMapping(value="/jefly",method=RequestMethod.GET)
public String beforeeee() throws Exception{
    return "{\"name\":\"dayun\", \"type\":\"C234\"}";
}



web访问拿到就是return的值,页面需要用Js转为对象才能解析 如:

var str="{\"name\":\"dayun\", \"type\":\"C234\"}"
var obj=JSON.parse(str);



请问有没有办法碰到这种情况下直接输出常规Json对象的值?


加载中
0
公孙二狗
公孙二狗
手动写到 HttpServletResponse
阿信sxq
阿信sxq
转换是发生在web前端的,你改写这个也不管事啊
火化十
火化十
这个思路是对的
0
亭舸翁
亭舸翁
@ResponseBody
0
Alexdevlin
Alexdevlin
在@RequestMapping(value="/jefly",method=RequestMethod.GET)下面加上@ResponseBody
Alexdevlin
Alexdevlin
回复 @火化十 : 你页面设置接收参数为json了么
火化十
火化十
并没有用,结果还是一个带引号的字符串,spring的配置文件有什么需要设置的?
0
阿信sxq
阿信sxq

在方法上添加注解

@ResponseBody



阿信sxq
阿信sxq
回复 @火化十 : 哦,页面你使用$.getJSON就好了噻
火化十
火化十
没有用,问题不是没有值,而是不是用对象转成的json的问题!
0
张亦俊
张亦俊
你返回ResponseEntity,设置一下ContentType应该就行了吧
0
厌恶自己
厌恶自己
该评论暂时无法显示,详情咨询 QQ 群:点此入群
火化十
火化十
写了很清楚了,并不是某一个对象的时候的问题,把数据放进map,那这个结构就变成了,我是实际要的数据,又被嵌在了,一个key里了! 现在的值已经是一个json了!为什么不直接返回呢?!?!
飞炀
飞炀
如果用了ResponseBody,直接返回Map就可以了吧..
0
让往事随风
让往事随风
通过js方法,ajax调用后台取得数据后返回前台页面,利用js显示到相应的页面标签下就可以啦,具体操作: http://edu.51cto.com/course/course_id-4220.html
0
bastetwang
bastetwang

produces = "text/plain;charset=utf-8"

不知道这样行不行。

0
火化十
火化十

引用来自“jorneyr”的评论

手动写到 HttpServletResponse
果然直接写进  response 就可以了
0
螃蟹大叔
螃蟹大叔
注解 @ResponseBody,然后返回string,其实你可以把他封装成一个固定的返回对象,每次都返回这个对象就可以了,这个对象可以在很多场景下复用,你这样纯粹用字符串的方式很容易出错,比如像我下面这个例子一样,可以很好的复用比你直接拼json安全高效吧
public class Result<T> implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 4389582745444177494L;
	public final static int CODE_FAIL = -1;
	public final static int CODE_SUCCUSS = 200;
	public Result() {
		this.timetemp = System.currentTimeMillis();
		this.code = CODE_FAIL;
	}
	public Result(int code) {
		this();
		this.code = code;
	}
	public Result(int code, String msg) {
		this(code);
		this.msg = msg;
	}
	public Result(int code, String msg, T data) {
		this(code,msg);
		this.setData(data);
	}
	
	//返回状态码
	private int code;
	//返回消息
	private String msg;
	//时间戳
	private long timetemp;
	//返回数据
	private T data;
	public int getCode() {
		return code;
	}
	public void setCode(int code) {
		this.code = code;
	}
	public String getMsg() {
		return msg;
	}
	public void setMsg(String msg) {
		this.msg = msg;
	}
	/**
	 * @return the data
	 */
	public T getData() {
		return data;
	}
	/**
	 * @param data the data to set
	 */
	public void setData(T data) {
		this.data = data;
	}
	/**
	 * @return the timetemp
	 */
	public long getTimetemp() {
		return timetemp;
	}
	/**
	 * @param timetemp the timetemp to set
	 */
	public void setTimetemp(long timetemp) {
		this.timetemp = timetemp;
	}
}



@RequestMapping(value="/get",method=RequestMethod.POST)
	public Result<OrderVO> get(@RequestParam(name="mobile",defaultValue="")String mobile,
			@RequestParam(name="openid",required=true)String openid,
			@RequestParam(name="storeid",required=true)String storeid,
			@RequestParam(name="pagestore",required=true)String pagestore,
			@RequestParam(name="deviceid",required=true)String deviceid,
			@RequestParam(name="couponid",required=true)String couponid,
			@RequestParam(name="timetemp",defaultValue="")String timetemp,
			@RequestParam(name="sign",defaultValue="")String sign) {
		
		//签名不通过
		Map<String, String> signMap = new HashMap<String, String>();
		signMap.put("openid",openid);  
		signMap.put("storeid",storeid);  
		signMap.put("pagestore",pagestore);  
        signMap.put("deviceid",deviceid);
        signMap.put("couponid",couponid);
        signMap.put("timetemp",timetemp);
		if(!weixinBiz.checkSign(signMap, sign)){
			return new Result<>(Result.CODE_FAIL,"签名错误");
		}
		
		//判断参数中的openid,若为空则取cookie的openid
		if(StringUtils.isBlank(openid)){
			openid = AppUtils.openId();
		}
		
		OrderVO orderVO = null;
		try {
//			//根据openid查找用户信息
//			Member member = weixinBiz.getMember(openid);
//			if(member == null) {
//				member = weixinBiz.bindMember(storeid, openid, mobile);
//			}
//		
//			//关注商铺
//		
//			//发放优惠券
//			orderVO = couponBiz.sendCoupon(couponid, member, "");
		} catch(UserExecuteFailedException userException) { 
			return new Result<>(userException.getCode(),userException.getMessage());
		} catch (Exception e) {
			log.error(MessageFormat.format("==用户({0})摇一摇领取优惠券({1})时出现异常",openid,couponid));
			return new Result<>(Result.CODE_FAIL,"系统繁忙,稍后重试");
		}
		return new Result<OrderVO>(Result.CODE_SUCCUSS,"OK",orderVO);
	}



火化十
火化十
你写了很多,但还是没get到点啊!已经搞定了
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部