respond to http request with json object in portlet

Well, one thing to notice, that the doView() is mostly responsible for rendering of your portlet. Your requirement can better achieved by
1 - processAction(Portlet Action) or
2 - serveResource(Portlet AJAX service).

To my view, AJAX request-response will be the most suitable case; for that you just need to create a resource URL on your portlet view. Like:

<portlet:resourceURL var="ajaxResourceURL" />

Add a JavaScript method to the page, from where you can generate AJAX request to your portlet. The method will look something like this,

<script type="text/javascript">
function _callAjax(val1, val2){
    var url = '<%=ajaxResourceURL %>';    // pass resource URL you created using scriplet / EL.
    jQuery.ajax({
    type : "POST",
    url : url,
    cache:false,
    dataType: "json",
    data: {
      value1: val1,    // extra parameters if you want to pass
      value2: val2
    },    
    success : function(data){
        // do whatever you want with your response data
    },
    error : function(XMLHttpRequest, textStatus, errorThrown){
       alert(errorThrown);
       alert(textStatus);
    }
  });
};
</script>

Call that ajax method on a button / link click event:

<input type="button" onclick="_callAjax('val1', 'val2')" value="Send" /> 

And finally, in your portlet's action listener class add the following serveResource method, responsible for handling AJAX based request(s).

Here you can get your request parameters and generate a response in the sense you want:

@Override
public void serveResource(ResourceRequest request, ResourceResponse response) throws PortletException,IOException {

String value1 = ParamUtil.getString(request , "value1", "default");    // request parameters
String value2 = ParamUtil.getString(request , "value2", "");

PrintWriter writer = response.getWriter();

JSONObject jsonObject = new JSONObject();
jsonObject.put(String key, boolean/long/Collection/double/Map/Object value);

writer.write(jsonObject.toString());
}

Thats it! Hope, this will be helpful for you :)