3
回答
url 烦人的‘\ /’
华为云4核8G,高性能云服务器,免费试用   

    访问浏览器,输出的json串为:

"ma009":"http:\/\/localhost:8080\/smart\/upload\/head.jpg"

这是我的java代码:

      String path = request.getContextPath();
      String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
      String dstPath = basePath+"upload/"+map.get("ma009");

 map.put("ma009", dstPath);

怎样才能输出为:"ma009":"http://localhost:8080/smart/upload/head.jpg"

 

举报
当空皓月
发帖于4年前 3回/354阅
共有3个答案 最后回答: 4年前
用的是struts2?
--- 共有 7 条评论 ---
当空皓月回复 @673 : 嗯,就是给移动端端写的接口,验证过了,确实没有影响,那就直接返回吧,哈哈 4年前 回复
673回复 @当空皓月 : 刚确认了一下,JSON解析的URL,会对“/”加一个“\”,形成了你说的烦人的“\/”。这个对移动客户端的接口调用、web端js解析json都没影响的。 重新问下,你的问题是什么?为什么一定要输出你想要的那样呢? 4年前 回复
当空皓月谢谢啊,问题依旧,但是将内容赋值到在线JSON中,显示正常,很郁闷 4年前 回复
673回复 @当空皓月 : 我可是中午边吃饭边给你解决问题的,目的是帮助有需要的人。 如果问题解决了,应该回复一下,这样能帮助到更多的人,而不是自己解决了就不管了哦。 4年前 回复
当空皓月@673 net.sf.json.JSONArray 4年前 回复
反转义一下不就好了吗?
--- 共有 6 条评论 ---
OSC首席键客回复 @673 : 对呀!会自动转义!那么在输出之前手动转义一下? 4年前 回复
673回复 @铂金眼 : 没明白你说的“编码成json时的转义”是指什么,json库将对象生成json串时,会自动对特殊符号进行处理的,不需要人为处理。即使你要格式化、美化输出等,调用json库自带的api方法即可。 4年前 回复
OSC首席键客回复 @673 : 你是说编码成json串的时候根本就不要转义? 4年前 回复
673这同学说的反转义,是在接收到json串后再处理。 它是一种方案,但不是根本方案。 4年前 回复
OSC首席键客回复 @当空皓月 : 卧槽,我一直都是用的系统自带的库函数来搞的,我不是写java的。 4年前 回复
我的团队前阵碰到相同的问题,给你参考下解决方案:


1.在action里定义一个object类型的变量(如: jsonResult),生成对应的getter/setter方法;

2.不需要再用第三方json库,直接返回想返回的对象即可,给你一个参考方法(我们使用的是零配置方式):

/**
     * 检测版本升级.
     * 
     * @return
     */
    @Action(value = "checkAppVersionUpdate", results = { @Result(name = "checkAppVersionUpdate", type = "json", params = {
            "root", "jsonResult" }) })
    public Object checkAppVersionUpdate() {
        Map<String, Object> resultMap = new HashMap<String, Object>();

        resultMap.put("result", getAppVersionService().checkAppVersionUpdate(verNo,
                verOsType));

        jsonResult = resultMap;

        return "checkAppVersionUpdate";
    }

顶部