spring mvc自動パッケージ先端から送信されたjsonデータは指定の対象にバインドされています.


1.問題シーン
フロントエンドでjQueryで楽屋にjsonデータを送信し、バックグラウンドでパッケージされたオブジェクトを受信します.
2.コードの例
先端
$.ajax({
    url:"XXXX",
    data:JSON.stringify(user),//user   json  
    type:"XXX",
    contentType: "application/json;charse=UTF-8",
    success:function (data) {

    },
    error:function (err) {

    }
});
注意
1.jsonデータはJSON.stingify()方法で文字列に変換しなければなりません.
2.contentTypeは省略できません.
楽屋
@RequestMapping(value = "xxxxx",method = RequestMethod.XXX)
@ResponseBody
public Msg methodName(@RequestBody User user) {
    logger.info("user:"+user);
    return Msg.success();
}
注意
@Request Bodyは省略できません.
3.spring mvcパッケージjsonデータの原理分析
まず、@Request Bodyを通じて、この方法のパラメータはrequestのbodyによって結合されるべきであることを示します.即ち、私たちは先端からjsonデータを伝えます.この変換器はorg.springframe ework.http.com nverter.Http Message Coverterの一つの実現類です.ここではアリのfastjsonを使って、springのデフォルトのJacksonに取って代わってデータを結び付けます.(fastjsonで一番直観的なメリットは、属性が空であれば、jsonに転化しないということです.データは簡潔で多いです.)
第一歩:mvcプロファイルにfastjsonを配置する
<mvc:annotation-driven>

    <mvc:message-converters>
        <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter4"/>
    mvc:message-converters>

mvc:annotation-driven>
ステップ2:ブレークポイントトレース要求の処理手順
comp.alibaba.fastjson.support.spring.FastJsonHttp Message Coverter 4唴readInternal方法で処理してください.要求されたbodyの内容を読み取り、JSON.parseObjectを通じてターゲットオブジェクトに戻ります.
protected Object readInternal(Class extends Object> clazz, //
                              HttpInputMessage inputMessage //
) throws IOException, HttpMessageNotReadableException {

    InputStream in = inputMessage.getBody();
    return JSON.parseObject(in, fastJsonConfig.getCharset(), clazz, fastJsonConfig.getFeatures());
}