【问题标题】:Data format to pass through different scripts/language(perl, python,c++)通过不同脚本/语言(perl、python、c++)传递的数据格式
【发布时间】:2014-04-25 09:56:59
【问题描述】:

目前,我需要将一种脚本语言的结果传递给另一种。例如,我想获取 tcl 脚本的结果并将该结果传递给 perl 脚本以继续。

结果数据不规则,表示不像 CSV 格式。我当然可以使用 JSON 格式来传递,但我不想(原因稍后描述)。所以我的问题是,除了 JSON 格式,还有其他流行的格式可以通过不同的脚本语言传递这些非常规文档类数据吗?

我不想使用 JSON 格式的原因是:

  1. JSON 格式的当前包正在读取整个 JSON 数据。有时我的数据太大,我必须逐块读取。例如以下数据:

    [
     { key: a0,
       value: b0
     },
     ...
     { key: a999999,
       value: b999999
     }
    ]
    
  2. 我的脚本没有 JSON 解析器包。而且我没有安装它们的权限。所以我正在寻找其他格式作为替代。

谢谢

【问题讨论】:

  • 你可以从这里开始:en.wikipedia.org/wiki/Comparison_of_data_serialization_formats 就个人而言,在你的情况下,我可能会选择 xml。
  • 另一种流行的格式是 XML。有用于流处理的库(SAX 或拉解析器)。
  • 如果您没有使用 CPAN 模块的权限,那么您在使用 Perl 时会严重限制您的选择。我强烈建议您努力解决此问题,并为自己打造一个可以使用 CPAN 强大功能的环境。
  • 你的第二个理由基本上是废话,你知道吗?只需将包/模块代码复制到您自己的代码中,并接受您正在做一些可怕的事情,这是由您所处的尴尬情况所迫使的。(它发生了。我们可能希望它没有,但它确实如此。)跨度>
  • 您的数据是否可以描述为(大!)键值对的集合?也许使用复杂的键,但即便如此?单个对的大小是否相当小,但数量却很大?如果是这样,流式传输非常简单,可以使用多种格式。如果您正在流式传输非常大的复杂结构数据,生活会变得……困难,我们可以说吗? tl;dr 您需要更准确地指定您要查找的内容,这才是一个合理的 Stack Overflow 问题。

标签: c++ json perl tcl


【解决方案1】:

YAML 是另一种选择,可以使用多种语言的解析器。

您的示例,一系列地图,看起来像

---
-
 key: a0
 value: b0
- 
 ...
-
 key: a999999
 value: b999999

【讨论】:

  • 但是是否有任何 YAML 解析器可以逐块读取和处理文件,而不是将其全部加载到内存中?
猜你喜欢
  • 2010-10-22
  • 2015-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 2010-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多