【问题标题】:Reading JSON file with Liquidsoap使用 Liquidsoap 读取 JSON 文件
【发布时间】:2014-12-12 22:44:13
【问题描述】:

我想使用相同的脚本创建多个 Liquidsoap 源,但带有一些变量,例如站名。

例如,我已经看到我可以包含一个 config.liq,但是如果我可以从与语言无关的东西(例如 JSON)中读取我的配置参数,那就太好了。 Liquidsoap 有一个 of_json 函数,但我不清楚如何从 JSON 文件而不是 JSON 字符串中读取。

我可以做些什么来获得一个不绑定到脚本语言的配置文件?

【问题讨论】:

    标签: liquidsoap


    【解决方案1】:

    好问题。我没有确切的代码给你,但我实际上已经能够通过 shell 到 cURL 从 HTTP 读取。 (然后,我找到了 HTTP 请求的内置函数,但我认为这些不适用于您的情况。)

    如果您找不到直接读取文件的命令,只需使用system() 并调用cat 转储文件。

    【讨论】:

    • 好主意,成功了。要使用的函数是 get_process_output,因为它将命令的输出作为字符串返回,而 system() 返回一个单位。
    【解决方案2】:

    我也找不到任何直接从liquidsoap 读取文件的命令。

    你总是可以使用环境变量:

    station_name = getenv("STATION_NAME")

    【讨论】:

      【解决方案3】:

      我不确定该设施何时添加到 Liquidsoap(我这里有 1.2.1),但假设您有 foo.json,例如:

      [
          {
               station_name : "Some Station",
               station_url  : "http://example.com/"
          },
          {
               station_name : "Some Other Station",
               station_url  : "http://other.example.com/"
          }
      ]
      

      然后你应该能够阅读和解析它:

      m = file.contents("config.json")
      print(of_json(default=[[("error", "badfile")]], m));
      

      给予

      [[("station_name","Some Station"), ("station_url","http://example.com/")], [("station_name","Some Other Station"), ("station_url","http://other.example.com/")]]
      

      如果您的 JSON 格式不同,您需要将默认模板调整为 of_json

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2019-07-31
        • 2015-01-19
        • 1970-01-01
        • 2019-07-04
        • 2021-12-28
        • 2021-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多