springmvc+json


1.私のspringmvc demoを書くとき、フロントに関連情報を返すため@ResponseBodyを設定しましたが、オブジェクトをjson形式に変換するにはxmlファイルに配置していないので、以下のエラーを報告します.
HttpMediaTypeNotAcceptableException: Could not find acceptable representation.
「史上最速のjson」と呼ばれたJacksonのデフォルト設定を採用しました
    <!--   spring mvc   -->
    <mvc:annotation-driven>
        <!--   JSON      -->
        <mvc:message-converters>  
        <bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
            <property name="supportedMediaTypes">  
                <list>  
                    <value>text/html;charset=UTF-8</value>  <!--   IE    JSON      -->
                </list>  
            </property>    
        </bean>  
        </mvc:message-converters>
    </mvc:annotation-driven>

2.運転後エラー:Could not find acceptable representation
なぜならjacksonの2つのパッケージを忘れたからです:jackson-core-asl-1.9.13とjackson-mapper-asl-1.9.13
3.実行後にエラーが発生しました:要素'mvc:annotation-driven'は、このタイプのコンテンツタイプが空であるため、文字または要素情報項目[サブレベル]を含まない必要があります.私のxmlの中のmvcネーミングスペースの中でxsdバージョンが3.0であることを発見しましたが、私は4.0を使っています.その後、このバージョンのシーケンス番号を消して、デフォルトのバージョンは何ですか?試してみると、デフォルトの最新のようです(myeclipseでリンクを開いてxsdファイルを表示できます)
4.ネット上で资料を探している时、fastjsonに関する文章を见て、见てみると、ネット上でfastjsonに対する賛否が异なっていることがわかりました.けなすのはfastjsonがアリババの温少が書いたもので、関連文書が少なく、問題が解決するのは難しい.でもアリババへの執着でfastjsonを使いました
    <!--   spring mvc   -->
       <mvc:annotation-driven>
        <!--   JSON      -->
           <mvc:message-converters>  
           <!--          class -->
        <bean id="jsonConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"><!--          class -->
            <property name="supportedMediaTypes">  
                <list>  
                    <value>text/html;charset=UTF-8</value>  <!--   IE    JSON      -->
                </list>  
            </property>    
        </bean>  
    </mvc:message-converters>  
       </mvc:annotation-driven>

コメント:
@ResponseBody:コンテンツまたはオブジェクトをHTTP応答本文として返し、@ResponseBodyを使用するとビュー処理部がスキップされ、適切なHttpMessageConverterが呼び出され、戻り値が出力ストリームに書き込まれます.
日付フォーマットのデータをフロントに転送する場合、fastjsonはデフォルトでDateタイプをLong型に変換するので、バックグラウンドDateタイプの数がフロントに転送されるエラー解決方法:1.ローカル解決-注記を追加します.すなわち、対応するフィールドに以下の注記@JSOnField(format="yyyyy-MM-dd HH:mm:ss")を加え、fastjsonがフロントにjsonを出力すると、設定したフォーマットが保持されます.しかし、これは、Dateタイプのフィールドごとにこのような注釈を付けることに注意してください.グローバル解決-fastjsonのconverterを書き換えるのと同じように、xmlファイルで自分で定義したclassを呼び出す注釈の処理クラスを書きます.3.グローバル解決-DateとString変換クラスを書き、バックグラウンドでデータをStringに変換してからフロントに転送します.フロントstringが伝わってきたらDateにします.そうすれば間違いはありません.