2012-09-22 24 views
5

Tôi đã xem bài đăng có tiêu đề rất giống nhau (Is there a C equivalent to Perls' Dumper() method in Data::Dumper?), liên quan đến một C tương đương với Data::Dumper::Dumper();. Tôi có một câu hỏi tương tự cho ngôn ngữ Go.Có ngôn ngữ Go tương đương với phương thức Perls 'Dumper() trong Dữ liệu :: Dumper không?

Tôi là một Zealot Perl theo giao dịch, và là một người yêu thích ủng hộ và sử dụng Data::Dumper và các con tương tự theo nghĩa đen hàng trăm lần mỗi ngày. Tôi đã học Go, bởi vì nó trông giống như một ngôn ngữ thú vị và thú vị, một cái gì đó sẽ giúp tôi thoát khỏi rốn Perl tôi đang ở, trong khi mở mắt cho những cách mới để làm stuffz ... Một trong những điều Tôi thực sự muốn có một cái gì đó như:

fmt.Println(dump.Dumper(decoded_json)) 

để xem cấu trúc dữ liệu kết quả, như Data::Dumper sẽ biến JSON thành một mảng các dấu gạch ngang. Nhìn thấy điều này trong Go, sẽ giúp tôi hiểu cách xây dựng và làm việc với dữ liệu. Một cái gì đó như thế này sẽ được coi là một thời điểm bóng đèn lớn trong việc học của tôi về Go.

Trái ngược với các câu lệnh được tạo trong C bài đăng đối tác, tôi tin rằng chúng tôi có thể viết bài này và tôi sẽ chuyển Dumper sang Println, sau khi biên soạn chuỗi JSON hoặc trang XML nào tôi chuyển vào và giải mã. Tôi sẽ có thể nhìn thấy kết quả giải mã, trong một Dumper như trạng thái ... Vậy, có biết thêm bất cứ thứ gì như thế này tồn tại không? hoặc có thể một số gợi ý để nhận được một cái gì đó như thế này được thực hiện?

Trả lời

10

Xin chào và chào mừng bạn đến với tôi.

Đối với câu hỏi của bạn, gói mã hóa/json có lẽ là gần nhất bạn sẽ tìm thấy một máy in khá dữ liệu đi. Tôi không chắc bạn thực sự cần nó mặc dù. Một trong những lý do dữ liệu :: Dumper là tuyệt vời trong perl là bởi vì nhiều lần bạn thực sự không biết cấu trúc của dữ liệu bạn đã tiêu thụ mà không kiểm tra trực quan nó. Mặc dù mọi thứ đều là một loại cụ thể và mỗi loại cụ thể đều có một cấu trúc cụ thể. Nếu bạn muốn biết dữ liệu sẽ trông như thế nào thì có thể bạn chỉ cần xem định nghĩa của nó.

Một số công cụ khác mà bạn nên xem xét bao gồm:

  • fmt.Println("%#v", data) sẽ in các dữ liệu ở dạng go-cú pháp.
  • fmt.Println("%T", data) sẽ in loại dữ liệu ở dạng cú pháp.
  • Nhiều định dạng fmt tùy chọn chuỗi được ghi nhận ở đây: http://golang.org/pkg/fmt/
+0

Có một ví dụ (sử dụng '% + v') trên [' json.Unmarshall'] (http://golang.org/pkg/encoding/json/# Unmarshal) doc. – ephemient

+0

@ Jeremy Wall Cảm ơn !! – jnbek

5

Tôi không quen thuộc với Perl và Dumper, nhưng từ những gì tôi hiểu của bài viết của bạn và C bài liên quan (và tên rất của hàm !), nó xuất ra nội dung của cấu trúc dữ liệu.

Bạn có thể thực hiện việc này bằng cách sử dụng% v động từ của fmt package. Tôi giả sử dữ liệu JSON của bạn được giải mã thành một cấu trúc hoặc một bản đồ. Sử dụng fmt.Printf("%v", json_obj) sẽ xuất các giá trị, trong khi% + v sẽ thêm tên trường (cho cấu trúc - không có sự khác biệt nếu bản đồ của nó,% v sẽ xuất cả khóa và giá trị) và% # v cũng sẽ xuất thông tin loại.

Các vấn đề liên quan