如何使用JQ转换此JSON数据以依次提取每个嵌套数组元素到顶层?

时间:2018-11-13 17:04:31

标签: json jq flatten

输入形式

StandardValuesCollection

我正试图转变成这样:

[
    {"a": 1, "b": [{"c": 1}, {"c": 2}]}, 
    {"a": 2, "b": [{"c": 4}, {"c": 5}]}
]

我有[ {"a": 1, "b": [{"c": 1}], {"a": 1, "b": [{"c": 2}], {"a": 2, "b": [{"c": 3}], {"a": 2, "b": [{"c": 4}] ] ,但是似乎不可能使用父上下文进行任何进一步的操作。我真的很受困扰,不胜感激。

谢谢

2 个答案:

答案 0 :(得分:1)

这是一个简单的解决方案,除了“ b”外,没有提及任何其他键:

window.saveFile = function saveFile () {
var data = [ {
"Prop": 3834,
   "Prop_Name": "House",
   "Eso_Stage": {
      "Eso_Code": "EX",
      "Eso_Name": "Alamos",
   }
}];
var opts = [{sheetid:'One',header:true}];
    var res = alasql('SELECT Prop_Name AS Prop, Eso_Stage->Eso_Nome AS  Eso INTO XLSX("restest344b.xlsx",?) FROM ?',
                     [opts,[data]]);
}

答案 1 :(得分:0)

您可以尝试使用此过滤器:

ngOnInit() {
  this.form.valueChanges.pipe(
    filter(() => this.form.valid)
  )
    .subscribe(changes => {
      const saveCourses$ = fromPromise(fetch(`/api/courses/${this.course.id}`, {
        method: 'PUT',
        body: JSON.stringify(changes),
        headers: {
          'content-type': 'application/json'
        }
      }));
    });
}

它将分别用jq 'map({a,"b":.b[]|[.]})' file 的每个值更新b的内容。