2017-07-30 11 views
1

私はデータベースにヒンディー語を保管しています。 私のfetchメソッドでは、私はobjectMapperを使用しています。これはヒンディー語フォントを特殊文字に変換しています。 objectmapperなしでうまくいきます。objectMapperはヒンディー語のテキストを特殊文字に変換します "???"

@CrossOrigin 
    @RequestMapping(value = "", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) 
    public ResponseEntity<?> fetchDepartmentInfo() { 
     try { 
      List<Map<String, Object>> departmentList = departmentServices.fetchDepartments(); 

      if (departmentList == null || departmentList.isEmpty()) 
       return new ResponseEntity<>(HttpStatus.NO_CONTENT); 
      else 
       return new ResponseEntity<String>(new ObjectMapper().writeValueAsString(departmentList), HttpStatus.OK); 
     } catch (Exception e) { 
      System.out.println(e); 
      return new ResponseEntity<>(HttpStatus.BAD_REQUEST); 
     } 
    } 

O/P:

[ 
    { 
     "department": "?? ?? ?????", 
     "departmentId": 1 
    } 
] 

が、それは次のようになります。

[ 
    { 
     "department": "जल कल विभाग", 
     "departmentId": 1 
    } 
] 
+0

文字列へのシリアル化中にこの破損が発生していて、入力を読み取っていないことが確実ですか?デバッガを使用して、まず 'departmentList'に正しい値が含まれていることを確認します。 – AlexR

+0

objectmapperを削除すると、期待通りの結果が返されます。そう、はい、objectmapperの問題。 –

答えて

1

はちょうどそれが私の問題を解決しAPPLICATION_JSON_UTF8_VALUE

@CrossOrigin 
     @RequestMapping(value = "", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) 
     public ResponseEntity<?> fetchDepartmentInfo() { 
      try { 
       List<Map<String, Object>> departmentList = departmentServices.fetchDepartments(); 

       if (departmentList == null || departmentList.isEmpty()) 
        return new ResponseEntity<>(HttpStatus.NO_CONTENT); 
       else 
        return new ResponseEntity<String>(new ObjectMapper().writeValueAsString(departmentList), HttpStatus.OK); 
      } catch (Exception e) { 
       System.out.println(e); 
       return new ResponseEntity<>(HttpStatus.BAD_REQUEST); 
      } 
     } 

にMEDIATYPEを変更しました。

0

あなたはインデントあなたのジャクソン・マッパーを構成しプリティプリントを有効にすることができます:mapper.enable(SerializationFeature.INDENT_OUTPUT);とこれを変換を行う必要があります正しく

はSerializationFeatureためdocumentationチェック:デフォルトプリティプリンタを使用して、 根底にある発電用のインデントを有効化(または無効化)でき

機能(詳細は JsonGenerator.useDefaultPrettyPrinter()を参照します)。

関連する問題