java如何从请求中获取json?

时间:2011-11-15 00:53:58

标签: jsp servlets struts2

我正在向服务器发布json请求。我可以看到http帖子在firebug中正确完成。 (我确定json格式有效)

例如。 {datas:[{“a”:1,“b”:2},{“a”:5,“b”:6}]}

我的问题是,如何在服务器端恢复此数据?我读过有人说使用request.getInputStream,但无法想出如何将其转换为字符串或使用GSON解析。

另一个问题:我可以发布json字符串大小的限制吗?

(Struts 2)

dojo.xhrPost({
                url: "sub/sub/theAction",
                postData: dojo.toJson(json),
                handleAs:'json',
                headers: { "Content-Type": "application/json; charset=utf-8"},          
                load: function(data) {      
                    alert("done");          

                        }
                }                       
            });

提前致谢

2 个答案:

答案 0 :(得分:1)

我不确定DOJO如何工作或发布数据,但相信必须与其他javascript框架相同。 这是我们可以做的,以实现你想要做的事情

<package name="demojson" extends="struts-default,json-default">
    <action name="jsonTest" class="com.demo.action.JsonTestAction">
        <interceptor-ref name="json">
            <param name="contentType">application/json</param>
        </interceptor-ref>
        <result type="json"/>
    </action>
</package>

public class JsonTestAction extends ActionSupport
{
        private static final long serialVersionUID = 1L;
        private Map data = new HashMap();
        // log decelaration         
        public Map getData()
        {
                return data;
        }

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

        @Override
        public String execute()
        {
                logger.log(Level.FINE, "action parameters: " + data);

                return SUCCESS;
        }
}


var submit = function()
{
    var data = {data: {j1 : 'one', j2: 'two', j3: [1, 2, 3, 4, 5], j4: {a: 'A', b: 2, c: '3'}, j5: 2, j6: '2'}};
    jQuery.ajax(
    {
        type: 'POST', 
        url: '/blah/jsonTest.action', 
        data: jQuery.toJSON(data),
        dataType: 'json',
        async: false ,
        contentType: 'application/json; charset=utf-8',
        success: do what you want here}
    });

json如何与Struts2一起使用

JSON Plugin for Struts2 };

希望这会对你有所帮助

答案 1 :(得分:0)

使用JSON Plugin及其拦截器;将使用请求数据填充Struts 2操作。

请注意插件文档页面上的JSON要求。