首页 > 解决方案 > 如何使 com.fasterxml.jackson 垂直打印数组?

问题描述

我在尝试在 Jackson 中垂直打印数组时遇到问题。我设法让它打印得很漂亮,但是有没有办法垂直打印数组?(见下面的结果部分,朋友安妮和比尔的名单)

我知道在这个例子中它很简单,但是在我的实际代码中,数组可以超过一百个,垂直显示会更好。

import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
public class TestJackson{
  public void testJackson() throws JsonProcessingException{
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.GETTER, Visibility.ANY);
        objectMapper.writer().withDefaultPrettyPrinter();
        objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
        MyClass myPojo = new MyClass();
        String report = objectMapper.writeValueAsString(myPojo);
        System.out.println(report);
    }
}

我的波乔:

class MyClass{
    private String name="John";
    private List<String> friends = new LinkedList<String>();
    private Address homeAddress = new Address("20", "Main St.");
    private Address workAddress = new Address("11", "Corner St.");
    public String getName(){
        return name;
    }
    public List<String> getFriends(){
        if (friends.size() == 0) {
            friends.add("Anne");
            friends.add("Bill");
        }
        return friends;
    }
    public Address getHomeAddress(){
        return homeAddress;
    }
    public Address getWorkAddress(){
        return workAddress;
    }
}
class Address{
    private String no;
    private String street;
    
    public Address(String no, String street){
        this.no = no;
        this.street = street;
    }
    
    public String getNo(){
        return no;
    }
    public String getStreet(){
        return street;
    }
    
}

我的结果:

  "name" : "John",
  "friends" : [ "Anne", "Bill" ],
  "homeAddress" : {
    "no" : "20",
    "street" : "Main St."
  },
  "workAddress" : {
    "no" : "11",
    "street" : "Corner St."
  }
}

标签: javajsonjackson

解决方案


推荐阅读