Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将JSON文件与grunt contrib concat组合_Javascript_Json_Concatenation_Gruntjs - Fatal编程技术网

Javascript 将JSON文件与grunt contrib concat组合

Javascript 将JSON文件与grunt contrib concat组合,javascript,json,concatenation,gruntjs,Javascript,Json,Concatenation,Gruntjs,我正在寻找在文件夹中组合json文件的最佳方法 对于HTML、CSS和JavaScript,这非常容易,因为您不需要分隔符或只需要一个。 然而,对于JSON,我们需要更多的东西使其成为有效的JSON对象 一种方法是将文件与,连接起来,并将所有内容包装在一个数组中。我想知道是否有更好/更简单的方法来做到这一点 Grunfile.js grunt.initConfig({ pkg:grunt.file.readJSON('package.json'), 康卡特:{ json:{ src:['src/

我正在寻找在文件夹中组合json文件的最佳方法

对于HTML、CSS和JavaScript,这非常容易,因为您不需要分隔符或只需要一个
。
然而,对于JSON,我们需要更多的东西使其成为有效的JSON对象

一种方法是将文件与
连接起来,并将所有内容包装在一个数组中。我想知道是否有更好/更简单的方法来做到这一点

Grunfile.js
grunt.initConfig({
pkg:grunt.file.readJSON('package.json'),
康卡特:{
json:{
src:['src/***.json'],
dest:'dist/combined.json',
选项:{
...
}
}
}
});
src/file1.json
{
“数字”:1
}
src/file2.json
{
“数字”:2
}
dist/combined.json 这将是理想的结果:

{
“数字”:[
{
“数字”:1
},
{
“数字”:2
}
]
}

您应该能够使用和选项

grunt.initConfig({
pkg:grunt.file.readJSON('package.json'),
康卡特:{
json:{
src:['src/***.json'],
dest:'dist/combined.json',
选项:{
//添加到文件的顶部
横幅:“{”数字“:[”,
//将添加到文件末尾
页脚:“]}”,
分隔符:','
}
}
}
});
您可以使用它

用法示例:

假设我们有以下类型的源JSON文件:

src/foo/foo-en.json:
{
    "foo": {
        "title": "The Foo",
        "name":  "A wonderful component"
    }
}
src/bar/bar-en.json:
{
    "bar": {
        "title": "The Bar",
        "name":  "An even more wonderful component"
    }
}
假设我们要生成以下目标JSON文件:

{
    "foo": {
        "title": "The Foo",
        "name":  "A wonderful component"
    },
    "bar": {
        "title": "The Bar",
        "name":  "An even more wonderful component"
    }
}
每个目标变量一个文件

grunt.initConfig({
    "merge-json": {
        "en": {
            src: [ "src/**/*-en.json" ],
            dest: "www/en.json"
        },
        "de": {
            src: [ "src/**/*-de.json" ],
            dest: "www/de.json"
        }`enter code here`
    }
});
grunt.initConfig({
    "merge-json": {
        "i18n": {
            files: {
                "www/en.json": [ "src/**/*-en.json" ],
                "www/de.json": [ "src/**/*-de.json" ]
            }
        }
    }
});
每个目标变量有多个文件

grunt.initConfig({
    "merge-json": {
        "en": {
            src: [ "src/**/*-en.json" ],
            dest: "www/en.json"
        },
        "de": {
            src: [ "src/**/*-de.json" ],
            dest: "www/de.json"
        }`enter code here`
    }
});
grunt.initConfig({
    "merge-json": {
        "i18n": {
            files: {
                "www/en.json": [ "src/**/*-en.json" ],
                "www/de.json": [ "src/**/*-de.json" ]
            }
        }
    }
});

您应该使用一个专用的、面向JSON的插件来处理这个问题。不仅仅是一个任意字符串concat


看看或

那么基本上你是在尝试在相同级别的键上合并?@DanKanze只是在尝试将JSON文件合并到另一个JSON文件中。这些文件的内容其实并不重要。@debzze,这意味着你试图保留密钥继承权,对吗?那么这真的有效吗?这不只是创建重复的对象/属性吗?我知道您是如何在目标中硬编码“数字”对象的,但是如果不这样做,这似乎是行不通的。我发现这个问题是因为我刚刚创建了一个grunt任务来创建JSON/YAML“清单”,我正在考虑做一些类似于您所描述的事情。如果我能获得更多关于用例的信息,它可能会帮助我决定合并对象和属性的最佳方式。