2009-06-16 64 views
16

Tôi là một đứa trẻ hai tuần tuổi liên quan đến Erlang và Mochiweb. Trước đó tôi đã có một hệ thống chạy trên PHP và ngay sau đó tôi nhận ra rằng nó sẽ không thể xử lý được loại tải mà tôi mong đợi. Vì vậy, tôi đã quyết định chuyển backend sang máy chủ dựa trên Mochiweb. Ngay bây giờ tôi cần biết cách triển khai JSON với Mochiweb. Tôi hoàn toàn nhận thức được sự tồn tại của thư viện mochijson2, nhưng là một người mới bắt đầu, tôi không thể xoay xở để tìm ra cách sử dụng nó. Ai đó có thể chỉ cho tôi một số nơi mà tôi có thể tìm thấy ví dụ về cách sử dụng thư viện này hoặc bất kỳ thư viện json khác trong erlang?ví dụ mochijson2!

Trả lời

9

API mochijson2 về cơ bản bao gồm chỉ hai chức năng, trong đó (nếu bạn đã tải mochiweb) có thể được sử dụng trực tiếp từ vỏ Erlang như sau:

erl -pa path/to/mochiweb/ebin 
... 
1> mochijson2:decode(<<"[1,2,3]">>). 
[1,2,3] 
2> iolist_to_binary(mochijson2:encode([1,2,3])). 
<<"[1,2,3]">> 

Có một số trường hợp thử nghiệm ở dưới cùng của mochiweb/src/mochijson2.erl cũng có thể hữu ích trong việc hiểu được ánh xạ giữa các thuật ngữ JSON và các thuật ngữ Erlang.

8

Vâng, tôi đã phải dành nhiều thời gian trong mã nguồn để tìm ra những gì đang diễn ra. Trên thực tế, mô tả rất nhiều kinh nghiệm của tôi với Erlang. Điều này đã giúp tôi tạo ra JSON mà tôi cần. Đây là một ví dụ nhanh.

ERL :: {struct, [{strKey, <<"strVal">>}, {intKey, 10}, {arrayKey, [1, 2, 3]}]} 
JSON :: {strKey:"strVal", intKey:10, arrayKey:[1, 2, 3]} 

Vì vậy, trong ví dụ này bạn có thể xem cách tạo đối tượng (mà mochijson2 muốn bạn gọi cấu trúc), chuỗi, số nguyên và mảng. Chúc may mắn!

1

Dưới đây là các lệnh erlang tương đương, thêm vào bình luận @ rik.the.vik của:

erl -pa path/to/mochiweb/ebin 
... 
iolist_to_binary(mochijson2:encode({struct, [{strKey, <<"strVal">>}, {intKey, 10}, {arrayKey, [1, 2, 3]}]})). 
mochijson2:decode(<<"{\"strKey\":\"strVal\", \"intKey\":10, \"arrayKey\":[1, 2, 3]}">>).