Подтвердить что ты не робот

Как преобразовать объект в строку в java

У меня есть функция, которая возвращает значение карты (String) как общий объект. Как преобразовать его в строку. Я попытался toString(), но все, что я получаю, это end[Ljava.lang.String;@ff2413

public Object getParameterValue(String key)
{
    Iterator iterator=params.entrySet().iterator();

    while(iterator.hasNext())
    {
        Map.Entry me=(Map.Entry)iterator.next();
        String[] arr=(String[])me.getValue();
        log.info(me.getKey().toString()+"="+arr[0]);
    }
    if(params.containsKey(key))
    {
        log.info(key+"="+params.get(key));
        return params.get(key);
    }


    return null;
}

Конечный результат

String temp=data.getParameterValue("request").toString();
log.info("end"+temp);

log.info(me.getKey().toString()+"="+arr[0]); дать мне вывод

[email protected]
request=login
projectid=as
4b9b3361

Ответ 1

Я боюсь, что ваша карта содержит что-то другое, кроме String объектов. Если вы вызываете toString() в объекте String, вы получаете строку.

Что вы получаете [Ljava.lang.String указывает, что у вас может быть массив String.

Ответ 2

Возможно, это не связано с проблемой выше. Однако, если вы ищете способ сериализации Java-объекта как строки, это может прийти в руки

package pt.iol.security;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import org.apache.commons.codec.binary.Base64;

public class ObjectUtil {

    static final Base64 base64 = new Base64();

    public static String serializeObjectToString(Object object) throws IOException {
        try (
                ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
                GZIPOutputStream gzipOutputStream = new GZIPOutputStream(arrayOutputStream);
                ObjectOutputStream objectOutputStream = new ObjectOutputStream(gzipOutputStream);) {
            objectOutputStream.writeObject(object);
            objectOutputStream.flush();
            return new String(base64.encode(arrayOutputStream.toByteArray()));
        }
    }

    public static Object deserializeObjectFromString(String objectString) throws IOException, ClassNotFoundException {
        try (
                ByteArrayInputStream arrayInputStream = new ByteArrayInputStream(base64.decode(objectString));
                GZIPInputStream gzipInputStream = new GZIPInputStream(arrayInputStream);
                ObjectInputStream objectInputStream = new ObjectInputStream(gzipInputStream)) {
            return objectInputStream.readObject();
        }
    }
}

Ответ 3

Глядя на вывод, кажется, что ваш "temp" является массивом String. Вам нужно пройти через массив, чтобы отобразить каждое значение.

Ответ 4

Результат не есть String, но a String[]. Вот почему вы получаете эту непредвиденную распечатку.

[Ljava.lang.String является сигнатурой массива String:

System.out.println(new String[]{});

Ответ 5

Решение 1: литье

String temp=(String)data.getParameterValue("request");

Решение 2: используйте типизированную карту:

Map<String, String> param;

Итак, вы меняете Изменить тип возврата своей функции

public String getParameterValue(String key)
{
    if(params.containsKey(key))
    {
        return params.get(key);
    }
    return null;
}

а затем нет необходимости в cast или toString

String temp=data.getParameterValue("request");

Ответ 6

Вопрос о том, как преобразовать объект в String, несмотря на несколько ответов, которые вы видите здесь, и, несмотря на существование метода Object.toString, является неопровержимым или имеет бесконечное количество ответов. Потому что то, что требуется, - это какое-то текстовое представление или описание объекта, и существует бесконечное число возможных представлений. Каждое представление кодирует конкретный экземпляр объекта с использованием языка специального назначения (возможно, очень ограниченного языка) или формата, достаточно выразительного для кодирования всех возможных экземпляров объекта.

Прежде чем код может быть записан для преобразования объекта в String, вы должны выбрать язык/формат, который будет использоваться.

Ответ 7

Преобразование объекта сериализации в String и String в Object

stringToBean(beanToString(new LoginMdp()), LoginMdp.class);

public static String beanToString(Object object) throws IOException {

    ObjectMapper objectMapper = new ObjectMapper();
    StringWriter stringEmp = new StringWriter();
    objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
    objectMapper.writeValue(stringEmp, object);
    return stringEmp.toString();
}

public static <T> T stringToBean(String content, Class<T> valueType) throws IOException {
    return new ObjectMapper().readValue(content, valueType);
}

Ответ 8

toString() - строка информации об отладке. Реализация по умолчанию возвращает имя класса и хэш системы. Коллекции возвращают все элементы, но не массивы.

Также знайте NullPointerException создание журнала!

В этом случае a Arrays.toString() может помочь:

Object temp = data.getParameterValue("request");
String log = temp == null ? "null" : (temp.getClass().isArray() ? Arrays.toString((Object[])temp) : temp.toString());
log.info("end " + temp);

Вы также можете использовать Arrays.asList():

Object temp = data.getParameterValue("request");
Object log = temp == null ? null : (temp.getClass().isArray() ? Arrays.asList((Object[])temp) : temp);
log.info("end " + temp);

Это может привести к ClassCastException для примитивных массивов (int[],...).

Ответ 9

/**  * This toString-Method works for every Class, where you want to display all the fields and its values  */ public String toString() {

StringBuffer sb = new StringBuffer();

Field[] fields = getClass().getDeclaredFields(); //Get all fields incl. private ones

for (Field field : fields){

    try {

        field.setAccessible(true);
        String key=field.getName();
        String value;

        try{
            value = (String) field.get(this);
        } catch (ClassCastException e){
            value="";
        }

        sb.append(key).append(": ").append(value).append("\n");

    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (SecurityException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }

}

return sb.toString(); }

Ответ 10

Вы можете создать метод toString() для преобразования объекта в строку.

int bid;
String bname;
double bprice;

Book(String str)
{
    String[] s1 = str.split("-");
    bid = Integer.parseInt(s1[0]);
    bname = s1[1];
    bprice = Double.parseDouble(s1[2]);
}

public String toString()
{
    return bid+"-"+bname+"-"+bprice;
}   

public static void main(String[] s)
{
    Book b1 = new Book("12-JAVA-200.50");
    System.out.println(b1);
}

Ответ 11

возможно, вам выгодно преобразовать его в строку JSON

String jsonString = new com.google.gson.Gson().toJson(myObject);

в моем случае я хотел добавить объект в заголовки ответов, но вы не можете добавлять объекты в заголовки,

поэтому для решения этой проблемы я конвертирую свой объект в строку JSON и на стороне клиента снова верну эту строку в JSON