我有一个来自特定类的对象的列表
,这些对象具有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,要么使用更高级别的库,例如 Jackson
或 Gson
。
根据更新的问题,以下是基于 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/