如何在java中将对象转换为字符串

abi*_*964 31 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;
}
Run Code Online (Sandbox Code Playgroud)

接收结束

String temp=data.getParameterValue("request").toString();
log.info("end"+temp);
Run Code Online (Sandbox Code Playgroud)

log.info(me.getKey().toString()+"="+arr[0]); 给我一个输出

email=x@as.com
request=login
projectid=as

Viv*_*sse 47

我担心你的地图包含的不是String对象.如果调用toString()String对象,则获取字符串本身.

你得到的[Ljava.lang.String表明你可能有一个String数组.


小智 14

可能与上述问题无关.但是,如果您正在寻找一种将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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Bas*_*ANI 7

也许您会受益于将其转换为JSON字符串

String jsonString = new com.google.gson.Gson().toJson(myObject);
Run Code Online (Sandbox Code Playgroud)

就我而言,我想在响应标头中添加一个对象,但是您不能在标头中添加对象,

因此,要解决此问题,我将对象转换为JSON字符串,然后在客户端将该字符串再次返回JSON