【发布时间】:2024-01-11 03:19:01
【问题描述】:
我有 Spring MVC 应用程序。
我有以下从客户端发送的 JSON 字符串
{
"cfgName": "Name",
"cfgfieldses": [
{
"cfgsName": "form.0",
"cfgValue": "someVal"
},
{
"cfgsName": "form.2",
"cfgValue": "hello"
},
{
"cfgsName": "form.3",
"cfgValue": "fname"
},
{
"cfgsName": "form.1",
"cfgValue": "how?"
}
]
}
我有两个类来解析这个
Config.java
public class Config implements Serializable {
private String cfgName;
private Set<CfgFields> cfgFieldses = new HashSet<CfgFields>(0);
//getters and setters
}
CfgFields.java
public class CfgFields implements Serializable {
private String cfgsName;
private String cfgValue;
//getters and setters
}
这是我的控制器
public void saveConfig(@RequestBody Config config) {
System.out.println(config.getCfgName());
for (Cfgfields cfgfields: config.getCfgFieldses()) {
System.out.println(cfgfields.getCfgsName());
}
}
cfgfieldses 不是我得到的,因为它是Set。这就是我得到的输出。
Name
form.1
form.2
form.0
form.3
当我从客户端发送 JSON 字符串时,我想以有序的方式进行操作。我可以尝试 List 而不是 Set。但我想知道是否有可能使用Set 并以有序的方式进入。
我的预期输出是
Name
form.0
form.2
form.3
form.1
【问题讨论】:
-
LinkedHashSet 代替 hashset? (LinkedHashSet保持插入顺序)
-
如果您想要订单顺序,您需要使用列表。
-
@chillworld 我已经尝试过
LinkedHashSet。但它也不起作用 -
与列表你有同样的问题(和顺序)? (那么它可能是 xml 的解析器)
-
我没有尝试过列表。我试图在没有 List 的情况下使用它以避免重复。在其他程序中,我尝试使用 LinkedHashSet 将 List 转换为 Set,它对我来说效果很好。但是在控制器中 JSON 没有按顺序设置。我不知道为什么
标签: java json spring-mvc set