【发布时间】:2018-12-19 16:47:02
【问题描述】:
我正在尝试使用fasterxml jackson.. 生成以下内容,但我被卡住了。我似乎不知道如何创建数组。
{
"setAccId":"12345",
"groupOf":null,
"isEnabled":false,
"list":[
{
"student":"jim",
"type":"S_A",
"retro":null
},
{
"student":"bob",
"type":"S_A",
"retro":null
}
],
"sort":[]
}
我有两节课。一个有 Json 属性,另一个是我打印的地方。
下面的类 (DynamicJsonHelper) 是我拥有所有 json 属性的地方
package com.company.jsonfc;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonPropertyOrder({
"accId",
"groupOf",
"isEnabled"
})
public class DynamicJsonHelper {
public String accId;
public String groupOf;
public List studentList;
@JsonProperty("accId")
public void setAccId(String accId) {
this.accId = accId;
}
@JsonProperty("groupOf")
public void setGroupOf(String groupOf) {
this.groupOf = groupOf;
}
@JsonProperty("isEnabled")
public boolean isEnabled() {
return false;
}
@JsonProperty("studentList")
public List<StudentList> studentList() {
return studentList;
}
}
学生名单班级(按照建议)
class StudentList {
String student;
String type;
String retro;
}
这是我称之为类(PrintJson)的地方。
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.company.jsonfc.DynamicJsonHelper;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class PrintJson {
@Test
public void create_json() throws JsonProcessingException {
final JsonNodeFactory factory = JsonNodeFactory.instance;
DynamicJsonHelper dynamicJsonHelper = new DynamicJsonHelper();
String jsonString;
ObjectMapper mapper = new ObjectMapper();
dynamicJsonHelper.setAccId("12345");
jsonString = mapper.writeValueAsString(dynamicJsonHelper);
System.out.println(jsonString);
}
}
这将导致打印以下内容:
{
"setAccId":"12345",
"groupOf":null,
"isEnabled":false
"studentList":null
}
1) 如何在最后添加列表:[ ... ] 数组和排序:[ ]?
2) 在 PrintJson 类中,我没有为 groupOf 设置值,但它仍然是在 Json 中创建的。如何设置它,如果我设置值,它会被打印出来。否则它不会包含在正在打印的 json 中。
如果您拿走我的代码并基于它给我示例以便更好地理解,我将不胜感激
【问题讨论】: