在我的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)"
答案 0 :(得分:0)
您需要反序列化对象。将下面的yourString替换为序列化的对象字符串。如果序列化的对象实际上是一个byte [],则在不调用getBytes()的情况下传递它。
InputStream is = new ByteArrayInputStream( yourString.getBytes() );
ObjectInputStream in = new ObjectInputStream (is);
// deserialization
Parameters object = (Parameters)in.readObject();