Commit 9a384a2fc27cdd05465f21ee446d02aaaa12de02

Authored by tzg
1 parent 0b5c7f4c

解决 Byte[] 类型 to string 死循环的问题

ruoyi-common/src/main/java/com/ruoyi/common/core/text/Convert.java
... ... @@ -7,10 +7,11 @@ import java.nio.charset.Charset;
7 7 import java.text.NumberFormat;
8 8 import java.util.Set;
9 9 import com.ruoyi.common.utils.StringUtils;
  10 +import org.apache.commons.lang3.ArrayUtils;
10 11  
11 12 /**
12 13 * 类型转换器
13   - *
  14 + *
14 15 * @author ruoyi
15 16 */
16 17 public class Convert
... ... @@ -19,7 +20,7 @@ public class Convert
19 20 * 转换为字符串<br>
20 21 * 如果给定的值为null,或者转换失败,返回默认值<br>
21 22 * 转换失败不会报错
22   - *
  23 + *
23 24 * @param value 被转换的值
24 25 * @param defaultValue 转换错误时的默认值
25 26 * @return 结果
... ... @@ -41,7 +42,7 @@ public class Convert
41 42 * 转换为字符串<br>
42 43 * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
43 44 * 转换失败不会报错
44   - *
  45 + *
45 46 * @param value 被转换的值
46 47 * @return 结果
47 48 */
... ... @@ -54,7 +55,7 @@ public class Convert
54 55 * 转换为字符<br>
55 56 * 如果给定的值为null,或者转换失败,返回默认值<br>
56 57 * 转换失败不会报错
57   - *
  58 + *
58 59 * @param value 被转换的值
59 60 * @param defaultValue 转换错误时的默认值
60 61 * @return 结果
... ... @@ -78,7 +79,7 @@ public class Convert
78 79 * 转换为字符<br>
79 80 * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
80 81 * 转换失败不会报错
81   - *
  82 + *
82 83 * @param value 被转换的值
83 84 * @return 结果
84 85 */
... ... @@ -91,7 +92,7 @@ public class Convert
91 92 * 转换为byte<br>
92 93 * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<br>
93 94 * 转换失败不会报错
94   - *
  95 + *
95 96 * @param value 被转换的值
96 97 * @param defaultValue 转换错误时的默认值
97 98 * @return 结果
... ... @@ -129,7 +130,7 @@ public class Convert
129 130 * 转换为byte<br>
130 131 * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
131 132 * 转换失败不会报错
132   - *
  133 + *
133 134 * @param value 被转换的值
134 135 * @return 结果
135 136 */
... ... @@ -142,7 +143,7 @@ public class Convert
142 143 * 转换为Short<br>
143 144 * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<br>
144 145 * 转换失败不会报错
145   - *
  146 + *
146 147 * @param value 被转换的值
147 148 * @param defaultValue 转换错误时的默认值
148 149 * @return 结果
... ... @@ -180,7 +181,7 @@ public class Convert
180 181 * 转换为Short<br>
181 182 * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
182 183 * 转换失败不会报错
183   - *
  184 + *
184 185 * @param value 被转换的值
185 186 * @return 结果
186 187 */
... ... @@ -193,7 +194,7 @@ public class Convert
193 194 * 转换为Number<br>
194 195 * 如果给定的值为空,或者转换失败,返回默认值<br>
195 196 * 转换失败不会报错
196   - *
  197 + *
197 198 * @param value 被转换的值
198 199 * @param defaultValue 转换错误时的默认值
199 200 * @return 结果
... ... @@ -227,7 +228,7 @@ public class Convert
227 228 * 转换为Number<br>
228 229 * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
229 230 * 转换失败不会报错
230   - *
  231 + *
231 232 * @param value 被转换的值
232 233 * @return 结果
233 234 */
... ... @@ -240,7 +241,7 @@ public class Convert
240 241 * 转换为int<br>
241 242 * 如果给定的值为空,或者转换失败,返回默认值<br>
242 243 * 转换失败不会报错
243   - *
  244 + *
244 245 * @param value 被转换的值
245 246 * @param defaultValue 转换错误时的默认值
246 247 * @return 结果
... ... @@ -278,7 +279,7 @@ public class Convert
278 279 * 转换为int<br>
279 280 * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
280 281 * 转换失败不会报错
281   - *
  282 + *
282 283 * @param value 被转换的值
283 284 * @return 结果
284 285 */
... ... @@ -289,7 +290,7 @@ public class Convert
289 290  
290 291 /**
291 292 * 转换为Integer数组<br>
292   - *
  293 + *
293 294 * @param str 被转换的值
294 295 * @return 结果
295 296 */
... ... @@ -300,7 +301,7 @@ public class Convert
300 301  
301 302 /**
302 303 * 转换为Long数组<br>
303   - *
  304 + *
304 305 * @param str 被转换的值
305 306 * @return 结果
306 307 */
... ... @@ -311,7 +312,7 @@ public class Convert
311 312  
312 313 /**
313 314 * 转换为Integer数组<br>
314   - *
  315 + *
315 316 * @param split 分隔符
316 317 * @param split 被转换的值
317 318 * @return 结果
... ... @@ -334,7 +335,7 @@ public class Convert
334 335  
335 336 /**
336 337 * 转换为Long数组<br>
337   - *
  338 + *
338 339 * @param split 分隔符
339 340 * @param str 被转换的值
340 341 * @return 结果
... ... @@ -357,7 +358,7 @@ public class Convert
357 358  
358 359 /**
359 360 * 转换为String数组<br>
360   - *
  361 + *
361 362 * @param str 被转换的值
362 363 * @return 结果
363 364 */
... ... @@ -368,7 +369,7 @@ public class Convert
368 369  
369 370 /**
370 371 * 转换为String数组<br>
371   - *
  372 + *
372 373 * @param split 分隔符
373 374 * @param split 被转换的值
374 375 * @return 结果
... ... @@ -382,7 +383,7 @@ public class Convert
382 383 * 转换为long<br>
383 384 * 如果给定的值为空,或者转换失败,返回默认值<br>
384 385 * 转换失败不会报错
385   - *
  386 + *
386 387 * @param value 被转换的值
387 388 * @param defaultValue 转换错误时的默认值
388 389 * @return 结果
... ... @@ -421,7 +422,7 @@ public class Convert
421 422 * 转换为long<br>
422 423 * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
423 424 * 转换失败不会报错
424   - *
  425 + *
425 426 * @param value 被转换的值
426 427 * @return 结果
427 428 */
... ... @@ -434,7 +435,7 @@ public class Convert
434 435 * 转换为double<br>
435 436 * 如果给定的值为空,或者转换失败,返回默认值<br>
436 437 * 转换失败不会报错
437   - *
  438 + *
438 439 * @param value 被转换的值
439 440 * @param defaultValue 转换错误时的默认值
440 441 * @return 结果
... ... @@ -473,7 +474,7 @@ public class Convert
473 474 * 转换为double<br>
474 475 * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
475 476 * 转换失败不会报错
476   - *
  477 + *
477 478 * @param value 被转换的值
478 479 * @return 结果
479 480 */
... ... @@ -486,7 +487,7 @@ public class Convert
486 487 * 转换为Float<br>
487 488 * 如果给定的值为空,或者转换失败,返回默认值<br>
488 489 * 转换失败不会报错
489   - *
  490 + *
490 491 * @param value 被转换的值
491 492 * @param defaultValue 转换错误时的默认值
492 493 * @return 结果
... ... @@ -524,7 +525,7 @@ public class Convert
524 525 * 转换为Float<br>
525 526 * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
526 527 * 转换失败不会报错
527   - *
  528 + *
528 529 * @param value 被转换的值
529 530 * @return 结果
530 531 */
... ... @@ -537,7 +538,7 @@ public class Convert
537 538 * 转换为boolean<br>
538 539 * String支持的值为:true、false、yes、ok、no,1,0 如果给定的值为空,或者转换失败,返回默认值<br>
539 540 * 转换失败不会报错
540   - *
  541 + *
541 542 * @param value 被转换的值
542 543 * @param defaultValue 转换错误时的默认值
543 544 * @return 结果
... ... @@ -583,7 +584,7 @@ public class Convert
583 584 * 转换为boolean<br>
584 585 * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
585 586 * 转换失败不会报错
586   - *
  587 + *
587 588 * @param value 被转换的值
588 589 * @return 结果
589 590 */
... ... @@ -595,7 +596,7 @@ public class Convert
595 596 /**
596 597 * 转换为Enum对象<br>
597 598 * 如果给定的值为空,或者转换失败,返回默认值<br>
598   - *
  599 + *
599 600 * @param clazz Enum的Class
600 601 * @param value 值
601 602 * @param defaultValue 默认值
... ... @@ -631,7 +632,7 @@ public class Convert
631 632 /**
632 633 * 转换为Enum对象<br>
633 634 * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
634   - *
  635 + *
635 636 * @param clazz Enum的Class
636 637 * @param value 值
637 638 * @return Enum
... ... @@ -645,7 +646,7 @@ public class Convert
645 646 * 转换为BigInteger<br>
646 647 * 如果给定的值为空,或者转换失败,返回默认值<br>
647 648 * 转换失败不会报错
648   - *
  649 + *
649 650 * @param value 被转换的值
650 651 * @param defaultValue 转换错误时的默认值
651 652 * @return 结果
... ... @@ -683,7 +684,7 @@ public class Convert
683 684 * 转换为BigInteger<br>
684 685 * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
685 686 * 转换失败不会报错
686   - *
  687 + *
687 688 * @param value 被转换的值
688 689 * @return 结果
689 690 */
... ... @@ -696,7 +697,7 @@ public class Convert
696 697 * 转换为BigDecimal<br>
697 698 * 如果给定的值为空,或者转换失败,返回默认值<br>
698 699 * 转换失败不会报错
699   - *
  700 + *
700 701 * @param value 被转换的值
701 702 * @param defaultValue 转换错误时的默认值
702 703 * @return 结果
... ... @@ -742,7 +743,7 @@ public class Convert
742 743 * 转换为BigDecimal<br>
743 744 * 如果给定的值为空,或者转换失败,返回默认值<br>
744 745 * 转换失败不会报错
745   - *
  746 + *
746 747 * @param value 被转换的值
747 748 * @return 结果
748 749 */
... ... @@ -754,7 +755,7 @@ public class Convert
754 755 /**
755 756 * 将对象转为字符串<br>
756 757 * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
757   - *
  758 + *
758 759 * @param obj 对象
759 760 * @return 字符串
760 761 */
... ... @@ -766,7 +767,7 @@ public class Convert
766 767 /**
767 768 * 将对象转为字符串<br>
768 769 * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
769   - *
  770 + *
770 771 * @param obj 对象
771 772 * @param charsetName 字符集
772 773 * @return 字符串
... ... @@ -779,28 +780,24 @@ public class Convert
779 780 /**
780 781 * 将对象转为字符串<br>
781 782 * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
782   - *
  783 + *
783 784 * @param obj 对象
784 785 * @param charset 字符集
785 786 * @return 字符串
786 787 */
787   - public static String str(Object obj, Charset charset)
788   - {
789   - if (null == obj)
790   - {
  788 + public static String str(Object obj, Charset charset) {
  789 + if (null == obj) {
791 790 return null;
792 791 }
793 792  
794   - if (obj instanceof String)
795   - {
  793 + if (obj instanceof String) {
796 794 return (String) obj;
797   - }
798   - else if (obj instanceof byte[] || obj instanceof Byte[])
799   - {
800   - return str((Byte[]) obj, charset);
801   - }
802   - else if (obj instanceof ByteBuffer)
803   - {
  795 + } else if (obj instanceof byte[]) {
  796 + return str((byte[]) obj, charset);
  797 + } else if (obj instanceof Byte[]) {
  798 + byte[] bytes = ArrayUtils.toPrimitive((Byte[]) obj);
  799 + return str(bytes, charset);
  800 + } else if (obj instanceof ByteBuffer) {
804 801 return str((ByteBuffer) obj, charset);
805 802 }
806 803 return obj.toString();
... ... @@ -808,7 +805,7 @@ public class Convert
808 805  
809 806 /**
810 807 * 将byte数组转为字符串
811   - *
  808 + *
812 809 * @param bytes byte数组
813 810 * @param charset 字符集
814 811 * @return 字符串
... ... @@ -820,7 +817,7 @@ public class Convert
820 817  
821 818 /**
822 819 * 解码字节码
823   - *
  820 + *
824 821 * @param data 字符串
825 822 * @param charset 字符集,如果此字段为空,则解码的结果取决于平台
826 823 * @return 解码后的字符串
... ... @@ -841,7 +838,7 @@ public class Convert
841 838  
842 839 /**
843 840 * 将编码的byteBuffer数据转换为字符串
844   - *
  841 + *
845 842 * @param data 数据
846 843 * @param charset 字符集,如果为空使用当前系统字符集
847 844 * @return 字符串
... ... @@ -858,7 +855,7 @@ public class Convert
858 855  
859 856 /**
860 857 * 将编码的byteBuffer数据转换为字符串
861   - *
  858 + *
862 859 * @param data 数据
863 860 * @param charset 字符集,如果为空使用当前系统字符集
864 861 * @return 字符串
... ... @@ -875,7 +872,7 @@ public class Convert
875 872 // ----------------------------------------------------------------------- 全角半角转换
876 873 /**
877 874 * 半角转全角
878   - *
  875 + *
879 876 * @param input String.
880 877 * @return 全角字符串.
881 878 */
... ... @@ -886,7 +883,7 @@ public class Convert
886 883  
887 884 /**
888 885 * 半角转全角
889   - *
  886 + *
890 887 * @param input String
891 888 * @param notConvertSet 不替换的字符集合
892 889 * @return 全角字符串.
... ... @@ -917,7 +914,7 @@ public class Convert
917 914  
918 915 /**
919 916 * 全角转半角
920   - *
  917 + *
921 918 * @param input String.
922 919 * @return 半角字符串
923 920 */
... ... @@ -928,7 +925,7 @@ public class Convert
928 925  
929 926 /**
930 927 * 替换全角为半角
931   - *
  928 + *
932 929 * @param text 文本
933 930 * @param notConvertSet 不替换的字符集合
934 931 * @return 替换后的字符
... ... @@ -960,7 +957,7 @@ public class Convert
960 957  
961 958 /**
962 959 * 数字金额大写转换 先写个完整的然后将如零拾替换成零
963   - *
  960 + *
964 961 * @param n 数字
965 962 * @return 中文大写数字
966 963 */
... ...