如何使用json数据格式化csv文件?
我有一个json文件需要转换成csv文件,但我有点担心会信任json-to-csv转换器站点,因为输出的数据似乎不正确。。。所以我希望能得到一些帮助 我有以下json文件结构:如何使用json数据格式化csv文件?,json,excel,csv,converter,Json,Excel,Csv,Converter,我有一个json文件需要转换成csv文件,但我有点担心会信任json-to-csv转换器站点,因为输出的数据似乎不正确。。。所以我希望能得到一些帮助 我有以下json文件结构: { "GroupName": "GrpName13", "Number": 3, "Notes": "Test Group ", "Units": [ { "UnitNumber": "TestUnit13", "DataSource": "Fact
{
"GroupName": "GrpName13",
"Number": 3,
"Notes": "Test Group ",
"Units": [
{
"UnitNumber": "TestUnit13",
"DataSource": "Factory",
"ContractNumber": "TestContract13",
"CarNumber": "2",
"ControllerTypeMessageId" : 4,
"NumberOfLandings": 4,
"CreatedBy": "user1",
"CommissionModeMessageId": 2,
"Details": [
{
"DetailName": "TestFloor13",
"DetailNumber": "5"
}
],
"UnitDevices": [
{
"DeviceTypeMessageId": 1,
"CreatedBy": "user1"
}
]
}
]
}
我认为我看到的问题是转换器似乎无法理解许多嵌套的数据值。我认为转换器是错误的原因是,当我尝试使用它们转换回json时,我没有收到相同的结构
是否有人知道如何手动将此json格式化为csv格式,或者知道可以处理嵌套值的可靠转换器
www.json-buddy.com/convert-json-csv-xml.htm
如果不适合你,那么你可以试试这个工具
应该是有帮助的 试试看
www.json-buddy.com/convert-json-csv-xml.htm
如果不适合你,那么你可以试试这个工具
应该是有帮助的 我已经在这个url上尝试了你的json: 因此: UnitNumber、DataSource、ContractNumber、CarNumber、ControllerTypeMessageId、NumberOfLandings、CreatedBy、CommissionModeMessageId、Details/0/DetailName、Details/0/DetailNumber、UnitDevices/0/DeviceTypeMessageId、UnitDevices/0/CreatedBy 测试单元13,工厂,测试合同13,2,4,4,用户1,2,测试车间13,5,1,用户1 因为它可以保存键的路径,就像列表“UnitDevices”中的“DeviceTypeMessageId”:它将列名称命名为“UnitDevices/0/DeviceTypeMessageId”,这可以避免相同的名称错误,因此您可以通过其转换器规则获取列名称
希望对您有所帮助。我已经在这个url上尝试了您的json: 因此: UnitNumber、DataSource、ContractNumber、CarNumber、ControllerTypeMessageId、NumberOfLandings、CreatedBy、CommissionModeMessageId、Details/0/DetailName、Details/0/DetailNumber、UnitDevices/0/DeviceTypeMessageId、UnitDevices/0/CreatedBy 测试单元13,工厂,测试合同13,2,4,4,用户1,2,测试车间13,5,1,用户1 因为它可以保存键的路径,就像列表“UnitDevices”中的“DeviceTypeMessageId”:它将列名称命名为“UnitDevices/0/DeviceTypeMessageId”,这可以避免相同的名称错误,因此您可以通过其转换器规则获取列名称 希望对您有所帮助。这里有一个使用 如果文件
filter.jq
包含
def denormalize:
def headers($p):
keys_unsorted[] as $k
| if .[$k]|type == "array" then (.[$k]|first|headers("\($p)\($k)_"))
else "\($p)\($k)"
end
;
def setup:
[
keys_unsorted[] as $k
| if .[$k]|type == "array" then [ .[$k][]| setup ]
else .[$k]
end
]
;
def iter:
if length == 0 then []
elif .[0]|type != "array" then
[.[0]] + (.[1:] | iter)
else
(.[0][] | iter) as $x
| (.[1:] | iter) as $y
| [$x[]] + $y
end
;
[ headers("") ], (setup | iter)
;
denormalize | @csv
和data.json
包含(注意添加了额外的示例)
然后命令
jq -M -r -f filter.jq data.json
将产生
"GroupName","Notes","Number","Units_CarNumber","Units_CommissionModeMessageId","Units_ContractNumber","Units_ControllerTypeMessageId","Units_CreatedBy","Units_DataSource","Units_Details_DetailName","Units_Details_DetailNumber","Units_NumberOfLandings","Units_UnitDevices_CreatedBy","Units_UnitDevices_DeviceTypeMessageId","Units_UnitNumber"
"GrpName13","Test Group ",3,"2",2,"TestContract13",4,"user1","Factory","TestFloor13","5",4,"user1",1,"TestUnit13"
"GrpName13","Test Group ",3,"2",2,"TestContract13",4,"user1","Factory","TestFloor13","5",4,"user10",10,"TestUnit13"
"GrpName13","Test Group ",3,"99",99,"Contract99",99,"user99","Another Factory","TestFloor99","99",99,"user99",99,"Unit99"
下面是一个使用
如果文件filter.jq
包含
def denormalize:
def headers($p):
keys_unsorted[] as $k
| if .[$k]|type == "array" then (.[$k]|first|headers("\($p)\($k)_"))
else "\($p)\($k)"
end
;
def setup:
[
keys_unsorted[] as $k
| if .[$k]|type == "array" then [ .[$k][]| setup ]
else .[$k]
end
]
;
def iter:
if length == 0 then []
elif .[0]|type != "array" then
[.[0]] + (.[1:] | iter)
else
(.[0][] | iter) as $x
| (.[1:] | iter) as $y
| [$x[]] + $y
end
;
[ headers("") ], (setup | iter)
;
denormalize | @csv
和data.json
包含(注意添加了额外的示例)
然后命令
jq -M -r -f filter.jq data.json
将产生
"GroupName","Notes","Number","Units_CarNumber","Units_CommissionModeMessageId","Units_ContractNumber","Units_ControllerTypeMessageId","Units_CreatedBy","Units_DataSource","Units_Details_DetailName","Units_Details_DetailNumber","Units_NumberOfLandings","Units_UnitDevices_CreatedBy","Units_UnitDevices_DeviceTypeMessageId","Units_UnitNumber"
"GrpName13","Test Group ",3,"2",2,"TestContract13",4,"user1","Factory","TestFloor13","5",4,"user1",1,"TestUnit13"
"GrpName13","Test Group ",3,"2",2,"TestContract13",4,"user1","Factory","TestFloor13","5",4,"user10",10,"TestUnit13"
"GrpName13","Test Group ",3,"99",99,"Contract99",99,"user99","Another Factory","TestFloor99","99",99,"user99",99,"Unit99"
CSV格式意味着您正在处理一个常规表。无法在CSV文件中正确表示树状结构。但是,如果要“转换”的结构始终具有相同的结构和相同数量的子结构,则可以将树结构转换为列,以相同的方式用于所有元素。例如:在生成CVS文件之前,您必须先“展平”您的结构。CSV格式意味着您正在处理一个常规表。无法在CSV文件中正确表示树状结构。但是,如果要“转换”的结构始终具有相同的结构和相同数量的子结构,则可以将树结构转换为列,以相同的方式用于所有元素。例如:在生成CVS文件之前,您必须先“展平”您的结构。