如何从序列化对象转换为POJO

时间:2019-04-12 00:37:00

标签: java solr

在我的Spring启动应用程序中,我试图从Solr搜索中读取一个对象。在运行时,对象名称及其属性将以字符串形式返回。如何将String转换为相应的POJO?

从Solr返回的对象:

/

POJO:

"Parameters(name=deviceType, value=D22, paramType=CONSTRUCTOR)"

是否有一种简单的方法可以从其字符串表示形式重新创建对象?

实际结果:

@UserDefinedType("parameters")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Parameters implements Serializable {

    private static final long serialVersionUID = -8665215569152413443L;

    private String name;
    private String value;
    @JsonProperty("param_type")
    private String paramType;

}

@Data
@SolrDocument(solrCoreName = ResultConstants.SOLR_CORE_NAME)
public class SolrRecord implements Serializable, Cloneable {

     @Field
     @Indexed(name = PARAMS, type = "text_general")
     private List<Parameters> params;
}
}

预期: 参数对象

"Parameters(name=deviceType, value=D22, paramType=CONSTRUCTOR)"

1 个答案:

答案 0 :(得分:0)

您需要反序列化对象。将下面的yourString替换为序列化的对象字符串。如果序列化的对象实际上是一个byte [],则在不调用getBytes()的情况下传递它。

InputStream is = new ByteArrayInputStream( yourString.getBytes() );
ObjectInputStream in = new ObjectInputStream (is); 
// deserialization
Parameters object = (Parameters)in.readObject();