温柔的炒粉 · android recyclerview ...· 2 周前 · |
八块腹肌的松鼠 · 记一次全局错误捕获打版本号 + ...· 1 年前 · |
有腹肌的夕阳 · c++对父类指针转换为子类指针时,是怎么保证 ...· 1 年前 · |
仗义的稀饭 · MySQL JSON类型字段的简单使用 - 掘金· 1 年前 · |
我正在尝试将JSON文件转换为CSV,但我似乎没有这样做的运气。我的JSON看起来是这样的:{{
{"meta": {
"contentType": "Response"
"content": {
"data": {
"_type": "ObjectList",
"erpDataObjects": [
"meta": {
"lastModified": "2020-08-10T08:37:21.000+0000",
"head": {
"fields": {
"number": {
"value": "1",
"id": {
"value": "10000"
"meta": {
"lastModified": "2020-08-10T08:37:21.000+0000",
"head": {
"fields": {
"number": {
"value": "2",
"id": {
"value": "10001"
"meta": {
"lastModified": "2020-08-10T08:37:21.000+0000",
"head": {
.. much more data
我基本上希望我的csv看起来像这样:
number,id
1,10000
2,10001
我的流程是这样的:
GetFile ->设置输出文件名-> ConvertRecord -> UpdateAttribute -> PutFile 。
ConvertRecord使用JsonTreeReader和CSVRecordSetWriter JsonTreeReader CsvRecordSetWriter 。他们都调用了一个AvroSchemaRegistry,它看起来如下所示: AvroSchemaRegistry ,AvroSchema本身如下所示:
{
"type": "record",
"name": "head",
"fields":
{"name": "number", "type": ["string"]},
{"name": "id", "type": ["string"]},
}
但我只得到了这个输出:
number,id
,
这是有意义的,因为我并没有特别指出这些值的位置。我以前使用过JsonPathReader,但它看起来只是这样: JsonPathReader ,显然只给了我一张唱片。我不太确定如何配置这两种方法中的任何一种来输出我想要的结果。我会非常感谢你的帮助!
发布于 2020-08-19 21:10:35
使用ConvertRecord用于JSON,-> CSV主要用于“平面”->文件,其中对象中的每个字段都成为传出->文件中的一列。对于嵌套/复杂结构,请考虑JoltConvertRecord,它允许您执行更复杂的转换。您的示例似乎不像-原样是有效的JSON,但是假设您的输入是这样的:
{
"meta": {
"contentType": "Response"
"content": {
"data": {
"_type": "ObjectList",
"erpDataObjects": [
"meta": {
"lastModified": "2020-08-10T08:37:21.000+0000"
"head": {
"fields": {
"number": {
"value": "1"
"id": {
"value": "10000"
"meta": {
"lastModified": "2020-08-10T08:37:21.000+0000"
"head": {
"fields": {
"number": {
"value": "2"
"id": {
"value": "10001"
}
下面的抖动规范应该为您提供输出所需的内容:
[
"operation": "shift",
"spec": {
"content": {
"data": {
"erpDataObjects": {
"*": {
"head": {
"fields": {
"number": {
"value": "[&4].number"
"id": {
"value": "[&4].id"
仗义的稀饭 · MySQL JSON类型字段的简单使用 - 掘金 1 年前 |