Tôi có một số dữ liệu python, được tuần tự hóa thành dưa chua và cần sử dụng nó trong chương trình C#. Vì vậy, có cách nào để deserialize dưa chua python trong C#? Tôi không thể thay đổi định dạng dữ liệu để JSON hoặc vvLàm thế nào tôi có thể deserialize dưa chua python trong C#?
Trả lời
Bạn nói rằng bạn không thể thay đổi chương trình tạo ra dưa chua. Nhưng chắc chắn bạn có thể viết một chương trình Python riêng biệt để đọc dưa chuột và viết nó ra một lần nữa như JSON?
import json, pickle
with open("data.pickle", "rb") as fpick:
with open("data.json", "w") as fjson:
json.dump(pickle.load(fpick), fjson)
Trích từ documentation
:
Định dạng dữ liệu được sử dụng bởi dưa là Python cụ thể. Điều này có lợi thế rằng không có giới hạn nào được áp đặt bởi các tiêu chuẩn bên ngoài chẳng hạn như XDR (không thể đại diện cho chia sẻ con trỏ); tuy nhiên nó có nghĩa là rằng các chương trình không phải Python có thể không thể tái tạo lại các đối tượng Python được ngâm.
Vì vậy, câu trả lời cho câu hỏi của bạn là không, bạn không thể deserialize nó trong C#. Bạn sẽ phải sử dụng một định dạng tương thích như XML hoặc JSON nếu bạn cần giao tiếp với các nền tảng khác.
Bạn có thể thử embedding IronPython và bỏ ghim từ đó, sau đó tạo đối tượng chưa được giải quyết có sẵn cho ứng dụng C#.
Lưu ý rằng dưa chua được thiết kế để tuần tự hóa Python đối tượng, vì vậy phương pháp này chỉ hoạt động nếu bạn có các đối tượng rất đơn giản với ánh xạ rõ ràng cho C# tương đương. Nó cũng đòi hỏi rằng môi trường IronPython của bạn có quyền truy cập vào tất cả các mô-đun xác định các lớp của tất cả các đối tượng chứa trong dưa chuột (giống như trong CPython).
Bạn nên cố gắng tuần tự hóa dữ liệu của mình theo cách tương tác khác (chẳng hạn như JSON hoặc XML) nếu có thể.
- 1. Làm thế nào tôi có thể deserialize một chuỗi JSON trong Mono?
- 2. Làm thế nào để kiểm tra xem một tập tin đã được tạo ra bởi dưa chua?
- 3. Làm thế nào tôi có thể cast hoặc deserialize SoapObject vào đối tượng của tôi?
- 4. Làm thế nào tôi có thể deserialize xml với một không gian tên mặc định?
- 5. Làm thế nào tôi có thể deserialize số nguyên int, không dài?
- 6. Làm thế nào tôi có thể thấy những gì capybara được tìm thấy trong một bước dưa chuột thất bại?
- 7. Làm thế nào để dưa một CookieJar?
- 8. Python: Làm thế nào tôi có thể chạy các hàm python song song?
- 9. Tôi có thể deserialize json để ẩn danh loại trong C#?
- 10. Làm thế nào tôi có thể tuần tự hóa - deserialize một băm để lưu nó trong cơ sở dữ liệu?
- 11. Làm thế nào tôi có thể thay thế simplejson với json trong python django?
- 12. Làm thế nào để Deserialize JSON Array?
- 13. Làm thế nào tôi có thể gọi một hàm có sự chậm trễ trong python?
- 14. Làm thế nào tôi có thể mô phỏng một liên minh C++ trong C#?
- 15. Python Pickle có ký tự/chuỗi bất hợp pháp mà tôi có thể sử dụng làm dấu phân cách không?
- 16. Làm thế nào tôi có thể làm cho một lớp lót này hoạt động trong DOS?
- 17. Làm thế nào tôi có thể gọi một kịch bản python từ một tập lệnh python
- 18. Làm thế nào tôi có thể đọc một chuỗi ký tự có dấu cách trong C?
- 19. Làm thế nào tôi có thể có nếp gấp cho C++/Java trong Emacs?
- 20. Làm thế nào tôi có thể có được một stacktrace từ C + + trong WinRT?
- 21. Tôi có thể sử dụng lớp C++ bằng Python như thế nào?
- 22. Làm thế nào tôi có thể làm cho tiếng bíp máy tính trong C#?
- 23. Làm thế nào tôi có thể làm cho params `out` trong C#?
- 24. Làm thế nào tôi có thể deserialize từ JSON với Scala sử dụng * không trường hợp * lớp học?
- 25. Deserialize JSON với C#
- 26. Làm thế nào để deserialize chỉ một phần của một tài liệu XML trong C#
- 27. Làm thế nào tôi có thể thêm các mục vào một tập rỗng trong python
- 28. Sử dụng Python Làm thế nào tôi có thể đọc các bit trong một byte?
- 29. Trong Python luồng, làm thế nào tôi có thể theo dõi hoàn thành một sợi?
- 30. Làm thế nào tôi có thể tạo ra các đối tượng json trống trong python
Chúng tôi chạy tập lệnh Python từ C# nơi tôi làm việc. Tôi không thể nhớ chính xác tên lắp ráp bạn cần (Microsoft.Scripting tôi nghĩ). – BenDundee