本人算法较弱,问了各种 GPT ,始终不能得到期望的结果,特来求助各位爹。需要将一个树形的 JSON 数据,从每一个子节点的最后一级节点向上级节点平铺,转换为单层数据列表,以下是相关 原数据、目标字段 JSONPath 和 期望得到的结果。
{
"mainData": [
{
"id": 1,
"name:": "a",
"sub": [
{
"title": "A",
"used": true
},
{
"title": "B",
"used": false
}
]
},
{
"id": 2,
"name:": "c",
"sub": [
{
"title": "C",
"used": true
},
{
"title": "D",
"used": false,
"s_data": [
{
"s_data_id": 4,
"s_data_value": 0.1
},
{
"s_data_id": 5,
"s_data_value": 0.2
}
]
}
]
}
],
"moreData": [
{
"m_id": 3,
"m_name:": "e",
"sub": [
{
"s_title": "E",
"s_used": true,
"ext": {
"cid": "3_1",
"remark": "complex"
}
},
{
"s_title": "F",
"s_used": false,
"ext": {
"cid": "3_2",
"remark": "complex"
},
"children": [
{
"c_c_id": "3_2_1",
"c_c_title": "321"
},
{
"c_c_id": "3_2_2",
"c_c_title": "322"
}
]
}
]
}
]
}
[
"$.mainData[*].id",
"$.mainData[*].name",
"$.mainData[*].sub[*].title",
"$.mainData[*].sub[*].used",
"$.mainData[*].sub[*].s_data[*].s_data_id",
"$.mainData[*].sub[*].s_data[*].s_data_value",
"$.moreData[*].m_id",
"$.moreData[*].m_name",
"$.moreData[*].sub[*].s_title",
"$.moreData[*].sub[*].s_used",
"$.moreData[*].sub[*].ext.cid",
"$.moreData[*].sub[*].ext.remark",
"$.moreData[*].sub[*].children[*].c_c_id",
"$.moreData[*].sub[*].children[*].c_c_title"
]
[
{
"$.mainData[*].id": 1,
"$.mainData[*].name": "a",
"$.mainData[*].sub[*].title": "A",
"$.mainData[*].sub[*].used": true
},
{
"$.mainData[*].id": 1,
"$.mainData[*].name": "a",
"$.mainData[*].sub[*].title": "B",
"$.mainData[*].sub[*].used": false
},
{
"$.mainData[*].id": 2,
"$.mainData[*].name": "c",
"$.mainData[*].sub[*].title": "C",
"$.mainData[*].sub[*].used": true
},
{
"$.mainData[*].id": 2,
"$.mainData[*].name": "c",
"$.mainData[*].sub[*].title": "D",
"$.mainData[*].sub[*].used": false,
"$.mainData[*].sub[*].s_data[*].s_data_id": 4,
"$.mainData[*].sub[*].s_data[*].s_data_value": 0.1
},
{
"$.mainData[*].id": 2,
"$.mainData[*].name": "c",
"$.mainData[*].sub[*].title": "D",
"$.mainData[*].sub[*].used": false,
"$.mainData[*].sub[*].s_data[*].s_data_id": 5,
"$.mainData[*].sub[*].s_data[*].s_data_value": 0.2
},
{
"$.moreData[*].m_id": 3,
"$.moreData[*].m_name": "e",
"$.moreData[*].sub[*].s_title": "E",
"$.moreData[*].sub[*].s_used": true,
"$.moreData[*].sub[*].ext.cid": "3_1",
"$.moreData[*].sub[*].ext.remark": "complex"
},
{
"$.moreData[*].m_id": 3,
"$.moreData[*].m_name": "e",
"$.moreData[*].sub[*].s_title": "F",
"$.moreData[*].sub[*].s_used": false,
"$.moreData[*].sub[*].ext.cid": "3_2",
"$.moreData[*].sub[*].ext.remark": "complex",
"$.moreData[*].sub[*].children[*].c_c_id": "3_2_1",
"$.moreData[*].sub[*].children[*].c_c_title": "321"
},
{
"$.moreData[*].m_id": 3,
"$.moreData[*].m_name": "e",
"$.moreData[*].sub[*].s_title": "F",
"$.moreData[*].sub[*].s_used": false,
"$.moreData[*].sub[*].ext.cid": "3_2",
"$.moreData[*].sub[*].ext.remark": "complex",
"$.moreData[*].sub[*].children[*].c_c_id": "3_2_2",
"$.moreData[*].sub[*].children[*].c_c_title": "322"
}
]
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.