Я пытаюсь получить этот вывод:
{
"columnNames":[
"fruit"
],
"values":[
[
"Apple is green"
]
],
"time":"2017-12-11T00:00:00Z"
}
Но я получаю следующее:
{
"columnNames":[
"fruit"
],
"values":[
[
{
"stringValue":"Apple is green",
"intValue":0,
"booleanValue":false
}
]
],
"time":null
}
Вот мой код (пока что) и я был бы признателен, если бы вы могли сказать мне, где я иду не так?
public static void main(String[] args) {
List<String> columnNames = new ArrayList<>();
columnNames.add("fruit");
List<List<ResponseValues>> responseValues = new ArrayList<>();
List<ResponseValues> values = Collections.singletonList(new ResponseValues("Apple is green"));
responseValues.add(values);
String expectedResult = createAJson(columnNames, responseValues);
System.out.println(expectedResult);
}
public static String createAJson(List<String> columnNames, List<List<ResponseValues>> values) {
String jsonBlock = "";
repBuilder repBuilder = new repBuilder();
ObjectMapper mapper = new ObjectMapper();
repBuilder.setColumnNames(columnNames);
repBuilder.setValues(values);
try {
jsonBlock = mapper.writeValueAsString(repBuilder);
}
catch (JsonProcessingException e) {
e.printStackTrace();
}
return jsonBlock;
}
И какой-нибудь код котельной плиты для создания секции значений отклика:
@JsonPropertyOrder({
"columnNames",
"values",
"time"
})
public class RepBuilder {
public List<String> columnNames;
public List<List<ResponseValues>> values;
private String time;
@JsonProperty("columnNames")
public List<String> getColumnNames() {
return columnNames;
}
@JsonProperty("columnNames")
public void setColumnNames(List<String> columnNames) {
this.columnNames = columnNames;
}
@JsonProperty("values")
public List<List<ResponseValues>> getValues() {
return values;
}
@JsonProperty("values")
public void setValues(List<List<ResponseValues>> values) {
this.values = values;
}
@JsonProperty("time")
public String gettime() {
return time;
}
@JsonProperty("time")
public void settime(String time) {
this.time = time;
}
}
И значения ответа: Это было сделано таким образом, чтобы я мог установить STRING или INTEGER или BOOLEAN и добавить в список?
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ResponseValues {
private String stringValue;
private int intValue;
private boolean booleanValue;
public ResponseValues(String stringValue) {
this.stringValue = stringValue;
}
public ResponseValues(int intValue) {
this.intValue = intValue;
}
public ResponseValues(boolean booleanValue) {
this.booleanValue = booleanValue;
}
public String getStringValue() {
return stringValue;
}
public void setStringValue(String stringValue) {
this.stringValue = stringValue;
}
public int getIntValue() {
return intValue;
}
public void setIntValue(int intValue) {
this.intValue = intValue;
}
public boolean getBooleanValue() {
return booleanValue;
}
public void setBooleanValue(boolean booleanValue) {
this.booleanValue = booleanValue;
}
}
Может кто-нибудь указать, кто яотсутствует?Я также пытался использовать @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
, но это не работает для меня, какие-нибудь другие идеи? Буду признателен, если вы используете мой код в контексте вашего ответа (так как я все еще изучаю Java)