Javascript 将JSON文件与grunt contrib concat组合
我正在寻找在文件夹中组合json文件的最佳方法 对于HTML、CSS和JavaScript,这非常容易,因为您不需要分隔符或只需要一个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,我们需要更多的东西使其成为有效的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“清单”,我正在考虑做一些类似于您所描述的事情。如果我能获得更多关于用例的信息,它可能会帮助我决定合并对象和属性的最佳方式。