zoukankan      html  css  js  c++  java
  • 精灵小巧的 Jsonpath 万精油:Snack3

    前几天和一个群里的朋友交流一个需求:在 Json 里像 XPath 一样找出节点,并修改值,然后输出新的Json。

    很多人马上就会说,Jsonpath 啊。

    是的 Jsonpath 确实能快速找出节点;但修改值,并在之前的文档树里生效,能吗???很多框架并不能!(或者相当复杂)

    能处理这种需要的 Snack3 算一个,而且非常的方便:

    case1 :修改k1的值

    var json = "{"k1":1,"k2":"123","k3":"az章","k4":[1, 2],"k5":{"k51": "511", "k52":[{"k521":"e"},{"k521":"F"}]}}";
    
    var oNode = ONode.load(json);
    
    oNode.select("$.k1").val(2);
    
    var json21 = oNode.toJson();
    

    case2 :修改k5/k52/@k512的值为e的所有节点(这需求听着都晕)

    var json = "{"k1":1,"k2":"123","k3":"az章","k4":[1, 2],"k5":{"k51": "511", "k52":[{"k521":"e"},{"k521":"F"}]}}";
    
    var oNode = ONode.load(json);
    
    oNode.select("$.k5.k52[?(@.k521 == 'e')].k521").forEach(n-> n.val("ee"));
    
    var json22 = oNode.toJson();
    

    处理之种需求,只需要添加70kb的框架

    <dependency>
      <groupId>org.noear</groupId>
      <artifactId>snack3</artifactId>
      <version>3.1.8.1</version>
    </dependency>
    

    万精油哦......

  • 相关阅读:
    20170416
    汇总02
    总结
    在编程的世界中,如何高效地学习理论知识,应用理论知识来解决实际生产中的问题
    周末待整理
    web 性能提升
    es6
    http、https、 json、 ajax
    微信小程序 问题收集
    eslint
  • 原文地址:https://www.cnblogs.com/noear/p/13482949.html
Copyright © 2011-2022 走看看