【问题标题】:Convert a JSON into CSV using jq使用 jq 将 JSON 转换为 CSV
【发布时间】:2017-12-08 13:20:27
【问题描述】:

我有一个 json 文件,它存储在环境变量 temp 中。

{ "users": [ { "username": "jack", "email": "jack@somewhere.com", "total running apps": "1", "api-mock-app": "0", "flogo": "1", "ipaas": "0", "nodejs-app": "0" }, { "username": "jill", "email": "jill@somewhere.com", "total running apps": "1", "api-mock-app": "0", "flogo": "1", "ipaas": "0", "nodejs-app": "0" } ] } 当我使用此命令将此 JSON 转换为 CSV 时

jq -r '.users[] | [.username, .email, .total running apps, .api-mock-app, .flogo, .ipaas, .nodejs-app] | @csv' <<< $temp

我收到以下错误。

jq: error: syntax error, unexpected IDENT (Unix shell quoting issues?) at , line 1: .users[] | [.username, .email, .total running apps, .api-mock-app, .flogo, .ipaas, .nodejs-app] | @csv
jq: 1 编译错误

有什么帮助吗?

【问题讨论】:

  • 现在新的错误是 jq: error: mock/0 is not defined at , line 1: .users[] | [.username, .email, ."total running apps", .api-mock-app, .flogo, .ipaas, .nodejs-app] | @csv

标签: json shell csv jq


【解决方案1】:

您需要引用列名,尤其是因为它们包含空格和破折号。但是,您需要转义 bash 的引号:

jq --raw-output '.users[] | [.username, .email, ."total running apps", ."api-mock-app", ."flogo", ."ipaas", ."nodejs-app"] | @csv'

【讨论】:

  • 它只打印密钥,并且也带有.,输出是:“.username”,“.email”,“.total running apps”,“.api-mock-app”,”。 flogo",".ipaas",".nodejs-app" ".username",".email",".total running apps",".api-mock-app",".flogo",".ipaas", “.nodejs-app”
  • 对不起,我把点放在了错误的地方(在引号里面而不是外面。我编辑了答案,现在它应该可以工作了
  • 成功了,能否请您也将密钥添加到 CSV 第一行?
【解决方案2】:

我得到了这个工作代码click here

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<html>
<head>
    <title>Demo - Covnert JSON to CSV</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
    <script type="text/javascript" src="https://github.com/douglascrockford/JSON-js/raw/master/json2.js"></script>

    <script type="text/javascript">
        // JSON to CSV Converter
        function ConvertToCSV(objArray) {
            var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
            var str = '';

            for (var i = 0; i < array.length; i++) {
                var line = '';
                for (var index in array[i]) {
                    if (line != '') line += ','

                    line += array[i][index];
                }

                str += line + '\r\n';
            }

            return str;
        }

        // Example
        $(document).ready(function () {

            // Create Object
            var items = [
                  { name: "Item 1", color: "Green", size: "X-Large" },
                  { name: "Item 2", color: "Green", size: "X-Large" },
                  { name: "Item 3", color: "Green", size: "X-Large" }];

            // Convert Object to JSON
            var jsonObject = JSON.stringify(items);

            // Display JSON
            $('#json').text(jsonObject);

            // Convert JSON to CSV & Display CSV
            $('#csv').text(ConvertToCSV(jsonObject));
        });
    </script>
</head>
<body>
    <h1>
        JSON</h1>
    <pre id="json"></pre>
    <h1>
        CSV</h1>
    <pre id="csv"></pre>
</body>
</html>

check out this link

【讨论】:

    猜你喜欢
    • 2015-06-22
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多