2015-05-07 1 views
0

Я потребляю много элементов (полей) из ответа webservice. Основными типами элементов являются BigDecimal, BigInteger, xmlGregorianCalender, String, int и т.п. не коллекции.Преобразование всех элементов в строку независимо от типа данных

Мое требование - мне нужно написать метод утилиты, который должен возвращать строковое значение независимо от типа.

Я googled везде, но я не смог найти решение. Прошу вас, чтобы добиться этого.

Я попытался следующие основаны на reply's.But я не получаю правильный выход

BigDecimal big = new BigDecimal(10); 
    BigInteger bigInt = new BigInteger("12334"); 
    String sampleStr1 = ToStringBuilder.reflectionToString(big); 
    String sampleStr2 = ToStringBuilder.reflectionToString(bigInt); 
    System.out.println("big::"+sampleStr1+"::bigint::"+sampleStr2); 

Выход:

big::[email protected][intVal= <null>,scale=0]::bigint::[email protected][signum=1,mag={12334},bitCount=0,bitLength=0,lowestSetBit=0,firstNonzeroIntNum=0] 

Ожидаемый результат:

big::10::bigint::12334 
+0

Для многих объектов вы можете использовать их метод 'toString()'. – CubeJockey

+0

@Trobbins благодарит вас за ответ. не может получить вас. Не могли бы вы привести пример, я новичок в java. Иногда иногда .toString() возвращает объект вместо значения строки. – VelNaga

+2

'toString()' всегда возвращает 'String'. – GriffeyDog

ответ

1

Будет ли метод toString() достаточно. Он должен быть реализован на всех классах и должен давать наилучшее резюме рассматриваемого объекта.

В противном случае, вы можете создавать свои собственные оболочки этих объектов и преобразовывать в формат JSON или XML с помощью Джексона или JAXB

0

Попробуйте использовать ToStringBuilder .reflectionToString() доступны в библиотеке апача Общин.

Пример кода:

public class Test { 
    BigDecimal big = new BigDecimal(10); 
    BigInteger bigInt = new BigInteger("12334"); 

    public String toString() { 
    **ToStringBuilder.setDefaultStyle(ToStringStyle.SIMPLE_STYLE);** 
    return ToStringBuilder.reflectionToString(this); 
    } 

    public static void main(String args[]) { 
    Test test = new Test(); 
    System.out.println(test); 
    } 
} 

Возвращает ответ в формате:

[email protected][field=value,..] 
[email protected][big=10,bigInt=12334] 

Установка выше стиля даст только значения, как

10,12334 

Я переопределены ToString() чтобы получить более тонкий контроль. Я не уверен, как исправить вывод с прямым доступом к Integer/BigDecimal.

+1

Не могли бы вы разместить образец примера конвертирования классов-оболочек (BigDecimal & BigInteger) в строку. Также это действительно будет работать для xmlGregorianCalender ?? – VelNaga

+0

тест общественного класса { BigDecimal big = new BigDecimal (10); BigInteger bigInt = новый BigInteger («12334»); public String toString() { return ToStringBuilder.reflectionToString (это); } public static void main (String args []) { Test test = new Test(); System.out.println (тест); } } – jags

+1

Пожалуйста, отредактируйте ваше сообщение (http://stackoverflow.com/posts/30106636/edit), чтобы добавить там правильный код. Используйте комментарии, чтобы отвечать только на других людей. –

Смежные вопросы