Есть объект java, который ссылается на другой объект, и этот объект ссылается на другой. Все эти три объекта могут быть сериализованы в json.
Все классы имеют соответствующую аннотацию Джексона:
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.ANY, setterVisibility = JsonAutoDetect.Visibility.NONE)
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
class A {
B b;
@JsonProperty("components")
public String getComponents() {
/***/
}
}
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE)
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
class B {
@JsonProperty
String message;
@JsonProperty
Long id;
@JsonIgnore
C c;
}
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE)
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
Class C {
@JsonProperty
String param1;
@JsonProperty
String param2;
}
В настоящее время метод getComponents
в классе A выглядит так:
public String getComponents() {
JSONObject components = new JSONObject();
components.put("b", b);
components.put("c", c);
return components.toString();
}
Для components
свойства I ожидайте увидеть в json следующее:
"components": { "b": {"message":"", id:1}, "c": {"param1":"", "param2":""}}
Но в настоящее время он возвращает ссылку на объекты
"components": { "b": "com.myproject.B@6by789ae", "c": "com.myproject.C@8io287ko"}
Учитывая, что каждый объект может быть превращен в json, почему не JSONObject.toString
рекурсивно l oop по ним и не превращает каждое в свое json представление? Есть ли какой-нибудь механизм, который я использую?