Could not find acceptable representation (已解决)

解决方案1:

@ResponseBody 方法的返回类型由JSONObject改为 Object, return时直接返回Object;

修改springmvc-servlet.xml, 增加 messageConverters

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
list>
property>
bean>

需要jacksonjar包支持: jackson-core-lgpl-1.2.1.jar和
jackson-core-lgpl-1.2.1.jar。

解决方案2:

@ResponseBody 方法的返回类型由JSONObject改为 String,
return时直接返回JSONObject.fromObject(object).toString();

此时如有中文会出现乱码,解决方法如下:

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
       
       
       
       <property name="messageConverters"> 
       <list> 
           <bean 
               class="org.springframework.http.converter.StringHttpMessageConverter"> 
               <property name="supportedMediaTypes"> 
                   <list> 
                       <bean class="org.springframework.http.MediaType"> 
                           <constructor-arg index="0" value="text" /> 
                           <constructor-arg index="1" value="plain" /> 
                           <constructor-arg index="2" value="UTF-8" /> 
                       bean> 
                   list> 
               property> 
           bean> 
       list> 
   property> 
   bean>
  

解决方案3:

返回类型为JSONObject, 编写一个自己converter.

package javacommon.util;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.nio.charset.Charset;
 
import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.http.converter.AbstractHttpMessageConverter;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.http.converter.HttpMessageNotWritableException;
 
public class JaksonConverter extends AbstractHttpMessageConverter<Object> {
    public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
     
    public JaksonConverter() {
        super(new MediaType("application", "json", DEFAULT_CHARSET));
    }
     
    @Override
    protected boolean supports(Class<?> clazz) {
        // TODO Auto-generated method stub
        return false;
    }
 
    @Override
    protected Object readInternal(Class<? extends Object> clazz,
            HttpInputMessage inputMessage) throws IOException,
            HttpMessageNotReadableException {
        logger.info(clazz.getSimpleName());
        InputStream inputStream=inputMessage.getBody();
        StringBuilder stringBuilder = new StringBuilder();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        String line = null;
        while((line = bufferedReader.readLine()) != null){
            stringBuilder.append(line);
        }
        logger.info(stringBuilder.toString());
        return stringBuilder;
    }
 
    @Override
    protected void writeInternal(Object t, HttpOutputMessage outputMessage)
            throws IOException, HttpMessageNotWritableException {
        logger.info(t.getClass().getSimpleName());
         
        // HashMap
        // JSONObject
        logger.info(t.toString());
        OutputStream os=outputMessage.getBody();
          
        os.write(t.toString().getBytes("utf-8"));
        os.flush();
         
    }
 
}

将方案1中的converter换成编写的即可。

你可能感兴趣的:(Could not find acceptable representation (已解决))