Java顺序读取Json文件、顺序读取Properties文件

Json

public int  add(String name) throws IOException {
    String jsonStr = new String(Files.readAllBytes(Paths.get("/Users/zhangcheng/Downloads/"+name)));
    Map<String, String> map = new HashMap<>();
    JSONObject respJson = JSONObject.parseObject(jsonStr, Feature.OrderedField);
    for (Map.Entry<String, Object> entry : respJson.entrySet()) {
        JsonOne jsonOne = new JsonOne();
        String key = entry.getKey();
        Object value = entry.getValue();
        jsonOne.setKeyName(key);
        jsonOne.setValueName((String) value);
        jsonOneService.save(jsonOne);
        map.put(key, String.valueOf(value));
    }
    return map.size();
}

Properties

由于Properties本身的构造方法会改变文件属性位置,所以我们需要重写Properties类 重写类如下:OrderedProperties

public class OrderedProperties extends Properties {



    private static final long serialVersionUID = -4627607243846121965L;



    private final LinkedHashSet<Object> keys = new LinkedHashSet<Object>();



    public Enumeration<Object> keys() {

        return Collections.<Object> enumeration(keys);

    }



    public Object put(Object key, Object value) {

        keys.add(key);

        return super.put(key, value);

    }



    public Set<Object> keySet() {

        return keys;

    }



    public Set<String> stringPropertyNames() {

        Set<String> set = new LinkedHashSet<String>();



        for (Object key : this.keys) {

            set.add((String) key);

        }



        return set;

    }

}

然后实现如下:

@GetMapping("/properties")
public int addx(String name) throws IOException {
    Properties props = new OrderedProperties();
    props.load(new FileReader("/Users/zhangcheng/Downloads/"+name));
    // 将properties转换为LinkedHashMap
    Map<String, String> data = new LinkedHashMap<>();
    for (String key : props.stringPropertyNames()) {
        JsonOne jsonOne = new JsonOne();
        String value = props.getProperty(key);
        jsonOne.setKeyName(key);
        jsonOne.setValueName(value);
        jsonOneService.save(jsonOne);
        data.put(key, props.getProperty(key));
    }
    return data.size();
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大毛族长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值