用蚂蚁解析json

时间:2010-03-26 21:57:14

标签: json ant

我有一个需要从Web服务器下载文件的ant构建脚本。我可以使用“get”任务逐个拉下这些文件。但是,我希望能够首先获取这些文件的列表,然后使用“get”迭代列表以下载文件。 Web服务器将以json格式报告文件列表,但我不确定如何使用ant解析json。

是否有任何允许json解析的ant插件?

3 个答案:

答案 0 :(得分:9)

我使用了Dave的上述建议并且效果非常好。这就是我想出的:

(注意,我从我的实际构建文件中删除了这个并试图删除任何特定的东西,只留下示例部分,所以请原谅我,如果它缺少任何东西或其他什么,但它应该让你知道它是如何工作的)

<?xml version="1.0"?>

<project name="jsonExample" default="all">
<target name="all" depends="example" />

<target name="example">

<!-- This uses Rhino - an Open Source implementation of JavaScript written in Java -
     to parse JSON. -->
<script language="javascript"> <![CDATA[

    importClass(java.io.File);
    importClass(java.io.FileReader);
    importClass(java.io.BufferedReader);
    importClass(java.io.FileWriter);
    importClass(java.io.BufferedWriter);

    var file = new File("/path/to/myJSON.js");
    fr = new FileReader(file);
    br = new BufferedReader(fr);

    // Read the file we just retrieved from the webservice that contains JSON.
    var json = br.readLine();

    // Evaluate the serialized JSON
    var struct = eval("(" + json + ")");

    // Get the data from 
    var value = struct.data.VALUE;

    echo = example.createTask("echo");
    echo.setMessage("Value = " + value);
    echo.perform();

    ]]>
</script>
</target>

答案 1 :(得分:5)

答案 2 :(得分:0)

这是我用来加载json-properties的宏。

 <macrodef name="json-properties">
     <attribute name="jsonFile"/>
     <sequential>
         <local name="_jsonFile"/>
         <property name="_jsonFile" value="@{jsonFile}"/>
         <script language="javascript">//<![CDATA[
             var json = new Packages.java.lang.String(
                 Packages.java.nio.file.Files.readAllBytes(
                     Packages.java.nio.file.Paths.get(project.getProperty("_jsonFile"))), "UTF-8");
             var properties = JSON.parse(json);
             for(key in properties) {
                 project.setProperty(key, properties[key]);
             }
     //]]></script>
     </sequential>
 </macrodef>