我需要将层次数据(AVRO数据,归结为JSON)转换为表格数据(csv)。由于AVRO有严格的schema,我基本上知道JSON将采用什么形式,但我必须对许多不同的模式进行此操作,因此我正在寻找一种一致的、声明性的方法来表达我需要进行的转换。例如,如果我输入的数据是这样的
{
"customers": [
{
"addresses": [
{
"city": "Los Angeles",
"country": "USA",
"county": null,
"postalCode": "90064",
"stateOrProvince": "California",
"street1": "11832 W. Pico Blvd.",
"street2": "",
"street3": "",
"street4": "",
"tags": [
"BILLING"
]
}
],
"company": "",
"dateCreated": "2009-04-24T11:42:31+00:00",
"dateOfBirth": null,
"doNotCall": null,
"email": {
"emailAddress": "general@magentocommerce.com"
},
"emailOptOut": null,
"fullName": {
"firstName": "Test",
"lastName": "General",
"middleName": "",
"prefix": "",
"suffix": ""
},
"gender": null,
"id": {
"Id": "2",
"namespace": "1000020016"
},
"lastModified": "2009-05-08T23:33:06+00:00",
"primaryPhone": {
"number": "866.4.VARIEN",
"type": "UNKNOWN"
},
"sourceIds": null
}
],
"totalItemsFound": 3
}
…我可能需要为每个客户输出一行,如下所示:
^{pr2}$我需要能够表达以下内容:
我从jsonpath开始,但这只解决了上面的1。我已经慢慢地在jsonpath上添加了一种语言来服务2和3,但是对于4我真的没有一个好的答案(除了eval,而且我真的很讨厌这样做)。我查看了JSON/T,但找不到它的python库。我甚至认真考虑过编写一个中间件来将JSON转换成XML,这样我就可以使用XSLT了,但我希望在我绝望之前,S/O的某个人有更好的解决方案。在
为什么不尝试一个类似于以下内容的功能分解:
其中
rename
将旧字段名映射到新字段名,transform
根据字段的转换集转换字段的值,default
返回要分配给该字段的值。在所以您只需要定义字段列表和函数:}。在
rename
,transform
,和{举个例子:
^{pr2}$相关问题 更多 >
编程相关推荐