spring mvc json数组双引号转换为"

Aad*_*dam 0 spring json spring-mvc jackson gson

这是我的控制器.

@RequestMapping(value="/updateItem.htm", method = RequestMethod.GET, headers="Accept=*/*", produces = "application/json; charset=utf-8")    
public @ResponseBody ModelAndView updateItem(ModelAndView model) {
                    List<String> list = aspireDAO.getSingleCol("select prod_id from items order by prod_id asc");
                    JsonArray jArray = AspireUtil.toJsonArray(list);
                    model.setViewName("UpdateItem");
            model.addObject("items", jArray);
                    System.out.println(jArray);
            return model;
        }
Run Code Online (Sandbox Code Playgroud)

对于spring-servlet.xml中的jackson支持

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
      <property name="mediaTypes">
        <map>
          <entry key="html" value="text/html"/>
          <entry key="json" value="application/json"/>
        </map>
      </property>
      <property name="defaultViews">
        <list>
          <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
            <property name="prefixJson" value="true"/>
          </bean>
        </list>
      </property>
    </bean>
Run Code Online (Sandbox Code Playgroud)

json数组在我的控制器sysout语句中很好用.当我检查页面的源时,json数组就像这样打印

'[&#034;amgc&#034;,&#034;atup&#034;,&#034;ciwy&#034;,&#034;eyqe&#034;,&#034;ijm
Run Code Online (Sandbox Code Playgroud)

可能是什么原因.如何解决它.

问候

AADAM

Mas*_*ave 5

要显示您应该使用的人类可读值

<c:out value="${items}" escapeXml="false"/>
Run Code Online (Sandbox Code Playgroud)

要不就

${items}
Run Code Online (Sandbox Code Playgroud)

您首先看到这一点的原因是,在添加到输出流之前,特殊字符被编码为html实体(您看到的东西),这些实体被认为是HTML安全的.另一方面,用于输出值的所有标记都具有合适的转义属性,该属性为控件提供是否应显示转义值.默认情况下,JSTL显示将escapeXml设置为true,调整这将解决您的问题