如何编写自定义json序列化程序并将值序列化为数组

mmmetafool

我需要将具有三个字段(一个是对象列表)的简单 java 对象序列化为 json ,如下所示:

{
"id": "1",
"fields": [
    {
        "value": {
                "someNumber": "0.0.2"
            },
        "id": "67"
    }
],
"name": "Daniel"}

我已经阅读了关于自定义序列化程序 StdSerializer 和 JsonGenerator 的指南,正如我所理解的那样,要写入"name": "Daniel"json,您需要做一些类似的事情,gen.writeObjectField("name", name);但我无法理解两件事:

  1. 如何写一些像这里的字符串值:

        "value": {
          "name": "0.0.2"
        },
    
  2. 以及如何将 java List 编写为这样的数组:

    "fields": [
    {
        "value": {
                "someNumber": "0.0.2"
            },
        "id": "67"
    }]
    

其中“fields”是一个包含两个字段的对象的列表:“value”和“id”。任何帮助表示赞赏

suiyueranzyq

像这样


public class Test {
    public static void main(String[] args) throws IOException {
        String ret;
        ByteArrayOutputStream bos = new ByteArrayOutputStream();

        ObjectMapper mapper = new ObjectMapper();
        JsonGenerator jg = mapper.getJsonFactory().createJsonGenerator(new PrintWriter(bos));

        jg.writeStartObject();

        jg.writeStringField("id", "1");

        jg.writeArrayFieldStart("fields");

        jg.writeStartObject();
        jg.writeObjectFieldStart("value");
        jg.writeStringField("someNumber","0.0.2");
        jg.writeEndObject();
        jg.writeStringField("id","67");
        jg.writeEndObject();

        //you can write more objects in fields here
        jg.writeEndArray();

        jg.writeStringField("name","Daniel");

        jg.writeEndObject();

        jg.flush();
        jg.close();

        ret = bos.toString();
        bos.close();
        System.out.println(ret);

    }
}

结果是

{
    "id":"1",
    "fields":[
        {
            "value":{
                "someNumber":"0.0.2"
            },
            "id":"67"
        }
    ],
    "name":"Daniel"
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用于序列化List <String>中的List <User>的自定义序列化程序

JSON Jackson-使用自定义序列化程序序列化多态类时的异常

如何在自定义序列化程序中访问默认的杰克逊序列化

用于Optional <?>的Jackson自定义序列化程序

如何为Jackson编写自定义JSON反序列化器?

如何为父类和子类使用单独的自定义json序列化程序?

如何使用Jackson将自定义方法的输出序列化为JSON?

如何编写自定义序列化程序?

如何对Map <String,Object>使用Jackson自定义值序列化程序?

如何使用活动模型序列化程序自定义json-api序列化模型的ID?

如何使用json.net自定义反序列化为对象

是否可以在自定义序列化程序中序列化为已知的默认格式?

如何使用python中的自定义字段将对象序列化为json

如何使用C#序列化序列化为非常自定义的格式

如何自定义JSON对象序列化?

序列化程序设置自定义值

原始数组的自定义Gson反序列化

如何使用自定义格式化程序进行JSON序列化

如何使用MobogDB C#驱动程序为实体编写自定义序列化程序?

Spring Boot - 使用自定义对象数组 JSON 序列化自定义对象

使用 JQuery 序列化和反序列化自定义对象数组

JSON 未反序列化为自定义类

如何从两个序列化程序创建自定义输出 JSON

如何在 C# 中将自定义对象序列化为 Json

Jackson 不会使用自定义序列化程序序列化 null

如何使用自定义序列化程序对使用 NEST 和 Elasticsearch 的子文档也序列化类型信息

如何将自定义 json 反序列化为 c# 对象

如何在 Django 中使用序列化程序返回自定义的非模型值?

如何重命名 JSON 页面属性而不必编写完整的自定义序列化程序?