springboot读取json文件按文件内字符顺序转化为json

8 篇文章 0 订阅
1 篇文章 0 订阅

最近需要对springboot工程下的resource目下的静态json文件做读取操作,但是在操作工程中,发现读取后直接转为json时,json的顺序发生了变化,这对我们接下来的业务处理有所影响,为了解决这个问题,度娘了一下,这块搜到的答案挺杂的,有的就是牛头不对马尾,固做下笔记,记录一下,可能描述的并不是太好,下面代码说明,新建temp.json,在resource目录下:

{
  "id":"1",
  "name":"霜之哀伤",
  "age":18
}

通过读取json文件的方法获取一下这个map的key,输出如下:

[name, id, age]

看到了,给我们预期的不符呀,修改后结果如下:

[id, name, age]

可以看到,修改后的这个顺序才是我们想要的。

看一下我们使用的这个方法:

/**
     * 读取json文件转为Map
     * @param path
     * @return
     */
    public static Map<String, String> readJsonFromClassPath(String path) {
        ClassPathResource resource = new ClassPathResource(path);
        if (resource.exists()) {
            try (InputStream in =  resource.getInputStream();){
                String readJson = IOUtils.toString(in, Charset.forName("UTF-8"));
                return JSON.parseObject(readJson, HashMap.class, Feature.OrderedField);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

没有任何其他依赖,IOUtils是commons工具包下的,并不是自己写的,依赖如下:

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.5</version>
</dependency>

我们要和json文件的顺序一样的,修改如下:

// 修改前
JSON.parseObject(readJson, HashMap.class, Feature.OrderedField);

// 修改后 
JSON.parseObject(readJson, LinkedHashMap.class, Feature.OrderedField)

可以看到将HashMap换成LinkedHashMap就可以实现。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值