私はいくつかの情報をオンラインで確認し、それが非常に複雑だと感じました。ここでは、2つの非常に簡単な方法を使用して、中国の文字化けコードの問題を解決しました。
春のバージョン:3.2.2.Release
ジャクソンJSONバージョン:2.1.3
解決策:コントローラーの方法は、応答を介して文字列タイプJSONデータをネットワークストリームに直接書き込みます。
JacksonのObjectMapperを使用して、Javaオブジェクトを型文字列のJSONデータに変換します。
中国の文字化けコードを避けるために、UTF-8、GBKなどの文字エンコード形式を設定する必要があります。
コードは次のとおりです。
Import org.springframework.beans.factory.annotation.autowired; import org.springframework.stereotype.controller; Import org.springframework.ui.model; Import org.springframework.web.bind.annotation.Requestmaps; Import; org.springframework.web.bind.annotation.requestmethod; Import org.springframework.web.bind.annotation.RequestParam; Import com.fasterxml.jackson.databind.objectmapper; // jsconjson json processerimport java.util。 *; Import javax.servlet.servletoutputStream; Import javax.servlet.http。 *; Import java.io.io.printtriter; Import java.nio.Charset.Charset; class HomeController {@RequestMapping(value = "/home/writejson"、method = requestmethod.get)public void writejson(httpservletResponse応答){objectmapper mapper = new objectMapper(); hashmap <string、string> map = new hashmap <string、string>(); map.put( "1"、 "Zhang San"); map.put( "2"、 "li si"); map.put( "3"、 "wang wu"); map.put( "4"、 "Jackson");文字列json = ""; try {json = mapper.writevalueasstring(map); System.out.println(json); //スキーム2 ServletOutputStream OS = Response.GetOutputStream(); //出力ストリームos.write(json.getbytes(charset.forname( "gbk")))を取得します。 // jsonデータをストリームに書き込みますos.flush(); //スキーム1 Response.setcharacterencoding( "utf-8"); //エンコーディングフォーマットResponse.setContentType( "text/html")を設定します。 //データフォーマットを設定しますprintwriter out = respons.getWriter(); //書き込みオブジェクトを取得します。print(json); // jsonデータをストリームout.flush()に書き込みます。 } catch(Exception e){e.printstacktrace(); } // "Home"を返します。 }}別の方法があります。@RequestMappingの生成パラメーターを作成します。コードは次のとおりです。
アイデア:@ResponseBodyアノテーションを使用して、JSON文字列を直接返します。中国語の文字化けコードを防ぐために、@RequestMappingのプロデューサーパラメーターを「text/html; charset = utf-8」に設定します。
@RequestMapping(value = "/home/writejson"、method = requestmethod.get、droces = "text/html; charset = utf-8")@responsebodypublic object writejson(httpservletresponse response){objectmapper mapper = new objectmapper(); hashmap <string、string> map = new hashmap <string、string>(); map.put( "1"、 "Zhang San"); map.put( "2"、 "li si"); map.put( "3"、 "wang wu"); map.put( "4"、 "Jackson");文字列json = ""; try {json = mapper.writevalueasstring(map); System.out.println(json); } catch(Exception e){e.printstacktrace(); } jsonを返します;}操作結果を以下の図に示します。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。