将Java中的对象列表序列化为json

时间:2018-07-17 07:11:20

标签: java json serialization jackson

当前,我正在尝试使用Jackson序列化要数组的对象列表。这里的场景是,如果列表仅包含一个元素,则该列表应序列化为一个对象,而不是数组。有什么规定吗?

我创建了一个Java模型,并使用下面的代码将其序列化为JSON

A testObject = new A();
    ObjectMapper mapper = new ObjectMapper();           
            String json = mapper.writeValueAsString(testObject);
            System.out.append (json)

DataModel

class A{
private B b;
}

Class B{
private ArrayList<C> c;
}

Class c
{
private int i;
private String test;
}

2 个答案:

答案 0 :(得分:0)

这是您要寻找的吗?

String json = mapper.writeValueAsString(!CollectionUtils.isEmpty(testObject) && testObject.size()==1? testObject.get(0):testObject);

答案 1 :(得分:0)

找到了SerializationFeature class EditProjectModal extends Component { constructor(props) { super(props); this.state = { project_name: '', description: '' } } onProjectNameChange(event) { this.setState({ project_name: event.target.value }); } onDescriptionChange(event) { this.setState({ description: event.target.value }); } handleSubmit(project) { fetch(`http://localhost:5000/projects/${project._id['$oid']}`, { method: 'PUT', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({ project: { project_name: this.state.project_name, description: this.state.description } }) }) .then(response => response.json()) .then(data => { return data }) .catch(err => console.log(err)); } render() { const { project } = this.props; return( <div className="btn-group"> <NavLink type="button" to="#" className={`${styles['pencil-link']}`} data-toggle="modal" data-target="#editProject"> <i className={`fas fa-pencil-alt ${styles.pencil}`}></i> </NavLink> <div id="editProject" className="modal fade" tabIndex="-1" role="dialog"> <div className={`modal-dialog modal-lg ${styles['create-proj-modal']}`}> <div className="modal-content"> <div className={`modal-header ${styles['create-proj-modal-header']}`}> <button type="button" className={`close ${styles.closeModal}`} data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <h3 className="modal-title" id="myModalLabel2">Edit Project</h3> </div> <div className={`modal-body ${styles['proj-modal-body']}`}> <form> <div className={`form-group ${styles.formGroup} ${styles.projName}`}> <label htmlFor="project-name" className="col-form-label">Project Name</label> <input type="text" className="form-control" id="project-name" name="project_name" onChange={this.onProjectNameChange.bind(this)} /> </div> <div className={`form-group ${styles.formGroup}`}> <label htmlFor="description" className="col-form-label">Description</label> <textarea className="form-control" id="description" rows="4" name="description" onChange={this.onDescriptionChange.bind(this)}></textarea> </div> </form> </div> <div className={`modal-footer ${styles.modalFooter} ${styles.editModalFooter}`}> <button type="button" className={`btn btn-default ${styles.cancelBtn}`} data-dismiss="modal">Cancel</button> <button type="button" className={`btn btn-primary text-white ${styles.saveBtn}`} onClick={(e) => this.handleSubmit(project)}>Save Changes</button> </div> </div> </div> </div> </div> ) } } export default EditProjectModal; ,通过它我们可以在JSON中获得上述场景