0

ここでは、サービスの 1 つから JSON を返そうとしていますが、エラーが発生する傾向があります。

SEVERE: The registered message body writers compatible with the MIME media type are:
application/json ->
  com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$App
  com.sun.jersey.json.impl.provider.entity.JSONArrayProvider$App
  com.sun.jersey.json.impl.provider.entity.JSONObjectProvider$App
  com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$App
  com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$App
*/* ->

ここに私のプログラムがあります:

import org.apache.solr.common.SolrDocumentList;

    @POST
    @Path("/userQuery")
    @Consumes(MediaType.TEXT_PLAIN)
    @Produces(MediaType.APPLICATION_JSON)
    public SolrDocumentList userQuery(String p){
      int sizy;
      String stry;
      StringBuilder sb = new StringBuilder();
      SolrDocument doc = null;
      SolrDocumentList docList = null;

      List<String> arr = new ArrayList();
      StringTokenizer token = new StringTokenizer(p,",");
      while(token.hasMoreElements()){
          stry = token.nextToken();
          arr.add(stry);
      }

      Set<String> xrr = new HashSet<String>(arr);
      try {
          SolrQuery query = new SolrQuery(createQuery(arr));
          query.setIncludeScore(false);
          query.setFields("age_group,last_name,fav_count,first_name");
          query.setParam("wt", "json");
          System.out.println(query);
          QueryResponse qr = authorSearcher.query(query);
          if (qr != null) {
              docList = qr.getResults();
          }
      } catch (SolrServerException ex) {
          sLog.error();
      }
      return docList;
    }

ここで、docList は JSON 形式で出力を提供します。param : wt=json に注意してください。jetty でシンプルな JAX-rs jersey アプリを使用しています。docList を文字列として返そうとすると、望ましい結果が返されますが、JSON の戻り値は失敗します。

私のweb.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>ServletAdaptor</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <init-param>
            <description>Multiple packages, separated by semicolon(;), can be specified in param-value</description>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>cribservice</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>ServletAdaptor</servlet-name>
        <url-pattern>/webresources/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>
4

1 に答える 1

0

json<>java 変換を行うにはライブラリが必要です。たとえば、Gensonを使用できます。

jar をクラスパスにドロップするだけで、すべてが機能するはずです。

于 2012-12-19T15:01:42.640 に答える