当前位置: 首页 > 知识库问答 >
问题:

用特定语法将Java对象转换为JSON

严宏旷
2023-03-14
public class User{
    private Long id;
    private String firstName;
}
{
    "inputFields":[
        {
            "name":"id",
            "value":"123"
        },
        {
            "name":"firstName",
            "value":"George"
        }
    ]
}

尝试使用Jackson,但它看起来不提供这样的序列化。

共有1个答案

沈翰
2023-03-14

Jackson可以使用自定义序列化程序,在此程序中可以控制输出的生成。以下是执行此操作的步骤:

注释POJO以使用自定义序列化程序

@JsonSerialize(using = CustomSerializer.class)
static class User{
    public Long id;
    public String firstName;

    public User(Long id, String firstName) {
        this.id = id;
        this.firstName = firstName;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
}

声明序列化程序

static class CustomSerializer extends JsonSerializer{

    @Override
    public void serialize(Object value, JsonGenerator jgen, SerializerProvider serializers) throws IOException, JsonProcessingException {
        jgen.writeStartObject();
        jgen.writeArrayFieldStart("inputFields");

        Field[] fields = value.getClass().getDeclaredFields();

        for (Field field : fields) {
            try {
                field.setAccessible(true);
                jgen.writeStartObject();
                jgen.writeObjectField("name", field.getName());
                jgen.writeObjectField("value", field.get(value));
                jgen.writeEndObject();
            } catch (IllegalArgumentException | IllegalAccessException e) {
                e.printStackTrace();
            }

        }

        jgen.writeEndArray();
        jgen.writeEndObject();
    }
}
public static void main(String[] args) throws JsonProcessingException {
    User user = new User(1L, "Mike");
    ObjectMapper om = new ObjectMapper();
    om.writeValueAsString(user);
    System.out.println(om.writeValueAsString(user));
}
{"inputFields":[{"name":"id","value":1},{"name":"firstName","value":"Mike"}]}
 类似资料:
  • 问题内容: 我正在将struts2用于Action,将jquery用于UI … 我想知道如何将Map对象转换为JSON对象并将其发送回UI, 现在可以在JSP页面中将其打印为普通的Java Map对象: 但我希望它是这样的: 我将如何实现这一目标…? 问题答案: 尝试Gson: 不过,我不建议将这种代码放入JSP。诸如此类的事情应该存在于Servlet或Action类之类的控制器中。 您还绝对不希

  • 问题内容: 我对服务进行了调用,并将响应存储在中。但是,我试图将其转换为类对象并得到错误。这是我的代码: 响应如下所示: 这是该类的样子: 但是我得到了错误: 我究竟做错了什么? 编辑1: 这是从答案中使用gson的尝试: 但是我得到了错误: 问题答案: 找出问题所在。需要提取jsonobject而不是获取字符串。这是解决此问题的行:

  • 例如:Date值为:“dateCollected”:fri Jul 07 00:00:00 IST 1989, 但它只服用星期五而不是整个日期。

  • 我应该使用什么API将Java对象转换为CSV。我可以使用google gson将java对象转换为CSV格式吗?

  • 我怎么能转换java对象到xml?我试图转换一个传入的java对象到xml在Spring集成与转换器豆。有没有其他的方法比编组在Jaxb?喜欢使用@TypeConver。或实现转换器类。

  • 问题内容: 我希望我的JSON看起来像这样: 到目前为止的代码: 和 我只是缺少如何使用Jackson将Java对象转换为JSON的部分: 我的问题是:我的课程正确吗?我必须调用哪个实例,以及如何实现此JSON输出? 问题答案: 要使用Jackson 转换JSON: