java - 如何使用属性作为键将对象列表转换为 JSON 对象?

标签 java json

我有一个来自特定类的对象的列表,这些对象具有name字段。我正在尝试将此列表转换为 JSON 对象,其中属性键将是该字段的 name,并且值始终设置为 null

我的最终 JSON 应如下所示:

{
  "Java": null,
  "React": null,
  "Spring": null
}

我的类(class)是这样的:

public class Tag {
    private Long id;
    private String name; // Java, Spring, React

    // setters and getters omited
}

我尝试使用以下代码对其进行转换:

ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
String json = ow.writeValueAsString(tagList);

但这只是返回一个 JSON 对象数组。

如何将我的列表转换为上述结构?

最佳答案

要么使用 json 库并手动创建 JSON,要么使用更高级别的库,例如 JacksonGson

根据更新的问题,以下是基于 json 库的代码,可生成所需的输出:

{"Java":null,"Spring":null}
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

public class TagConverter {
    public static void main(String[] args) {
        List<Tag> tags = new ArrayList<>();
        Tag t1 = new Tag("Java");
        Tag t2 = new Tag("Spring");
        tags.add(t1);
        tags.add(t2);
        JSONObject json = new JSONObject();
        for(Tag t : tags){
            json.put(t.name, JSONObject.NULL);
        }

        System.out.println(json);
    }

    private static class Tag{
        public Long id;
        public String name;

        public Tag(String name){
            this.name = name;
        }
    }
}

添加 Maven 依赖项或从 maven 获取库:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20180813</version>
</dependency>

关于java - 如何使用属性作为键将对象列表转换为 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57399463/

相关文章:

c# - 从 XML 生成不同的 JSON

c# - 在 C# 中解析 JSON

java - Redisson:在finalize方法中关闭客户端

java - 如何在 Android Studio 中链接一个库项目

java - 在 Node-RED/Watson IoT 中,我的 Java 设备客户端不断在连接和断开连接之间切换

java - ControlP5 库中用于处理的 .setBounds(int, int, int, int) 问题

javascript - JSONP 和 Backbone.js

java - jackson :@JsonIdentityInfo 对象而不是 id

python - 在python中解析特殊的json

java - 如何否定一个值与java [Integer.Min_Value]中的值相同