微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

action中json异常

在开发过程中,经常会使用到ajax请求,返回的数据类型一般是json格式,但有时候在action中会遇到json异常,造成前端无法获取到正确的数据。

public class TestAction extends ActionSupport {
    private Map data;

    //getter and setter

    public String test(){
        data = new HashMap();
        User user = new User();
        user.setUserName("test");
        data.put("user",user);

        return SUCCESS;
    }

    public String getData(){
        return JSONObject.fromObject(data).toString();
    }
}

action中json异常

以上是一个简单的action类,定义了一个Map类型的data属性,以及test方法和getData方法。test方法向data中存放了一个User对象,然后返回SUCCESS;getData方法返回将data转化成json字符串后的结果。

但是我们在前端获取到的数据是这样的:

{
  "user": {
    "class": "com.action.User","userName": "test"
  }
}

可以看到user对象多了一个class属性,这就是json异常的体现。

出现这个问题的原因是java对象认会被转化成一个json对象,而json对象有一个认的class属性,它用来表示该对象的类型。而我们在前端获取到json数据后,一般会将json字符串转化成一个js对象,因为js中没有class属性,所以要去掉class属性,才能正确的使用对象属性

public class TestAction extends ActionSupport {
    private Map data;

    //getter and setter

    public String test(){
        data = new HashMap();
        User user = new User();
        user.setUserName("test");
        data.put("user",user);

        return SUCCESS;
    }

    public String getData(){
        JSONObject json = JSONObject.fromObject(data);
        json.remove("user.class");
        return json.toString();
    }
}

解决方法是在方法getData中,先将data转化成一个JSONObject对象,然后移除每个对象的class属性,再将json对象转化成字符串后返回。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐