繁体   English   中英

JavaSet接口-按顺序解析JSON字符串

[英]Java- Set Interface - Parse JSON String in order

我有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?"
    }
  ]
}

我有两个类来解析

配置文件

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

代替HashSet ,使用LinkedHashSet

HashSet不同, HashSet不能保证其项的顺序, LinkedHashSet允许您按其成员的插入顺序对其成员进行迭代。

编辑

如果要对Set项目强制执行特定的排序顺序(例如,通过表单名称),请使用SortedSet ,例如TreeSet 您将需要为Cfgfields类提供一个自定义Comparator器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM