У меня есть следующие классы моделей:Как сериализовать объекты Java как field.path = field.value
package com.ab.model;
import java.util.List;
public class Request {
public Request(String requestType, Body body, List<String> emails) {
this.requestType = requestType;
this.body =body;
this.emails = emails;
}
private String requestType;
private Body body;
private List<String> emails;
public String getRequestType() {
return requestType;
}
public void setRequestType(String requestType) {
this.requestType = requestType;
}
public Body getBody() {
return body;
}
public void setBody(Body body) {
this.body = body;
}
public List<String> getEmails() {
return emails;
}
public void setEmails(List<String> emails) {
this.emails = emails;
}
}
class Body {
private String content;
private List<Header> headers;
public Body(String content, List<Header> headers) {
this.content = content;
this.headers = headers;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public List<Header> getHeaders() {
return headers;
}
public void setHeaders(List<Header> headers) {
this.headers = headers;
}
}
class Header {
private String headerName;
public Header (String headerName) {
this.headerName = headerName;
}
public String getHeaderName() {
return headerName;
}
public void setHeaderName(String headerName) {
this.headerName = headerName;
}
}
И следующий экземпляр класса Request:
Request request = new Request(
"get",
new Body("abcdefg",
Arrays.asList(new Header("header_one"))),
Arrays.asList("[email protected]", "[email protected]"));
Знаете ли вы библиотека или алгоритм, который может сериализовать объект запроса в следующую строку?
requestType = "get"
body.content = "abcdefg"
body.headers[0].headerName = "header_one"
emails[0] = "[email protected]"
emails[1] = "[email protected]"
Я знаю, что могу сериализовать его как JSON, XML, и т.д., но они не подходят моему случай использования. В принципе мне нужна сериализация как: field.nestedField.reallyNestedField = «его примитивное значение»
В качестве следующего шага, я планирую прочитать сгенерированный код и генерировать произвольные данные для каждого поля/nestedField затем десериализации его обратно используя PropertyUtils от Apache, например:
PropertyUtils.setProperty(requestObject, "requestType", "random type");
PropertyUtils.setProperty(requestObject, "body.content", "random content");
//...
Большое спасибо! Andrei
Не могу этого сделать. Классы, которые мне нужно для сериализации, не под моим контролем. Тем не менее, у них есть конструкторы по умолчанию. – AndreiB