- 已关闭**。此问题需要超过focused。当前不接受答案。
- 想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。
13小时前关门了。
Improve this question
我有一个包含具有重复字段的对象的文件
[
{
"a": "random text",
"b": "more random text",
"c": "more random text",
"b": "something else",
"c": "more something else"
},
{
"a": "random text 2",
"b": "more random text 2",
"c": "more random text 2",
"b": "something else 2",
"c": "more something else 2"
}
]
因为我使用的是javascript,所以当我试图打印数据时,它只能识别最后一个重复字段,也就是说,我只能打印b:另外,c:更多的东西,b:其他内容2,c:我无法控制文件的源代码,所以我想知道是否有一种方法可以使用javascript来处理这个问题。另一种选择是使用bash将第二个"b"和"c"更改为类似"b2"和"c2"的内容,但并不是所有对象都有"b"和"c"。任何想法都将受到高度赞赏,谢谢!
编辑:文件的固定格式。
3条答案
按热度按时间rmbxnbpk1#
使用有问题的JSON作为输入:
产生:
你可以从那开始。
免责声明:jm是我为JSON机器编写的 Package 器脚本。
iszxjhcz2#
下面的代码更加复杂,但它确实有助于保持输入中JSON对象的不同:
输出:
警告:上面的解决方案假设输入是一个平面JSON对象数组,如Q中所示。如果输入不采用这种形式,结果可能会出乎意料。
lc8prwob3#
如果希望结果是一个数组,请考虑以下解决方案,它使用此处定义的面向流的
GROUPS_BY
,而不是jq的group_by
,以避免使用-s选项:当然,这里假设输入是一个平面JSON对象数组。
结果是: