Ant + JSON:如何从文件中读取JSON,修改它然后将其写回文件

时间:2015-01-09 23:17:28

标签: json eclipse ant

我需要在Eclipse项目中使用Ant来执行此操作:

读取一个JSON文件(位于我的Eclipse项目中),解析它,这样我就可以对其中的一个属性进行更改,最后将生成的JSON写回同一个文件。

这可能吗?我尝试过使用JavaScript的方法,但是如果没有指定绝对路径,我甚至无法访问该文件(我不想这样做,我更喜欢这是相对于Ant脚本的。)< / p>

提前致谢

1 个答案:

答案 0 :(得分:0)

非常肯定这可以在Javascript中完成。对于操作文件,我的偏好是groovy ant task

实施例

├── build.xml
└── demo.json

在运行构建之前

$ cat demo.json
{ "one": 1, "three": 3, "two": 2 }

运行构建后

$ cat demo.json
{
    "four": 4,
    "one": "uno",
    "three": 3,
    "two": 2
}

的build.xml

<project name="demo" default="edit-settings-file">

   <property name="settings.file" location="demo.json"/>

   <target name="edit-settings-file" depends="install-groovy">
      <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy"/>

      <groovy>
         import groovy.json.JsonSlurper
         import groovy.json.JsonOutput

         def file = new File(properties["settings.file"])
         def demo

         file.withReader {
            demo = new JsonSlurper().parse(it)
         }

         demo.one  = "uno"
         demo.four = 4

         file.withWriter {
            it.write(JsonOutput.prettyPrint(JsonOutput.toJson(demo)))
         }
      </groovy>
   </target>

   <!--
   ===========
   Build setup
   ===========
   -->
   <available classname="org.codehaus.groovy.ant.Groovy" property="groovy.installed"/> 

   <target name="install-groovy" unless="groovy.installed">
      <mkdir dir="${user.home}/.ant/lib"/>
      <get dest="${user.home}/.ant/lib/groovy.jar" src="http://search.maven.org/remotecontent?filepath=org/codehaus/groovy/groovy-all/2.3.9/groovy-all-2.3.9.jar"/>
      <fail message="Groovy has been installed. Run the build again"/>
   </target>

</project>