PowerShell / PowerShell/PowerShell
`Export-Csv`/`ConvertTo-Csv` to better stringify complex properties
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- C#
- Star
- 55.5k
- Fork
- 8.5k
- Merge trung bình
- 1 ngày 2 giờ
- Pull request đã merge (30 ngày)
- 88
Mô tả
Summary of the new feature / enhancement
Although questionable, trying to put a structured object into a flat csv file, is a quite common question at stackoverflow (see e.g.: Getting System.Object[] issue for JSON Array data in output in PowerShell Script). This is often based on a misconception of the concerned structures, stingifying it to just the type name (as e.g. System.Object[]) is quiet pointless, instead I would expect the complex properties to have a similar value as the display format of Format-Table:
$List = [PSCustomObject]@{
int = 1
string = 'One'
Array = 1, 2
HashTable = @{ '1' = 'One'; '2' = 'Two' } # Using string keys, see: #5749
Object = [PSCustomObject]@{ 1 = 'One'; 2 = 'Two' }
},
[PSCustomObject]@{
int = 2
string = 'Two'
Array = 3, 4
HashTable = @{ '3' = 'Three'; '4' = 'Four' }
Object = [PSCustomObject]@{ 3 = 'Three'; 4 = 'Four' }
}
(2023-10-01: Changed hashtable to string keys for reason explained at: #5749)
Format-Table output
$List | Format-Table
int string Array HashTable Object
--- ------ ----- --------- ------
1 One {1, 2} {[2, Two], [1, One]} @{1=One; 2=Two}
2 Two {3, 4} {[4, Four], [3, Three]} @{3=Three; 4=Four}
Current ConvertTo-Csv output
$List | ConvertTo-Csv
"int","string","Array","HashTable","Object"
"1","One","System.Object[]","System.Collections.Hashtable","@{1=One; 2=Two}"
"2","Two","System.Object[]","System.Collections.Hashtable","@{3=Three; 4=Four}"
Expected ConvertTo-Csv output (wishful thinking)
$List | ConvertTo-Csv
"int","string","Array","HashTable","Object"
"1","One","{1, 2}","{[2, Two], [1, One]}","@{1=One; 2=Two}"
"2","Two","{3, 4}","{[4, Four], [3, Three]}","@{3=Three; 4=Four}"
Apart from the fact that is makes more sense, it might also help to troubleshoot and understand the situation.
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu bằng cách xác định các entry point của Export-Csv và ConvertTo-Csv cùng các bài kiểm thử hiện có của chúng, sau đó so sánh cách chuyển đổi thuộc tính phức tạp thành chuỗi hiện tại với các ví dụ Format-Table trong issue. Xác định và kiểm thử các cách biểu diễn dự kiến cho mảng, bảng băm và đối tượng lồng nhau, đồng thời giữ nguyên đầu ra vô hướng hiện có; công việc được xem là hoàn tất khi các ví dụ CSV dự kiến được các bài kiểm thử bao phủ.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- csharp, powershell
- Lĩnh vực
- cli
- Loại issue
- Tính năng
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100