2011-11-14 46 views
6

Tôi đang cố gắng kéo văn bản ra khỏi bài viết Wikipedia bằng API của họ (API là một thuật ngữ hào phóng cho những gì họ đang cung cấp, nhưng chúng tôi sẽ sử dụng nó), và tôi chạy vào các vấn đề liên quan đến phân tích cú pháp của đối tượng JSON tiếp theo mà tôi đang quay lại. Cụ thể, đối tượng chứa văn bản Tôi đang tìm kiếm dưới một phím có nhãn là '*' như vậy mà, sau khi chạy lệnh:Wikipedia API - Truy cập JSON Object

$.getJSON("http://en.wikipedia.org/w/api.php?action=parse&format=json&callback=?", {page:"Red Sea clownfish", prop:"text"}, function(data) { 

Sau đó tôi cố gắng để phân tích thông tin này vào một chuỗi bằng cách sử dụng lệnh:

var dat = data.parse.text.*; 

nào tôi sau đó xuất ra một giao diện điều khiển sử dụng:

console.log(dat); 

Thật không may, không phải Google Chrome hay Firefox dường như để có thể phân tích '*' khóa. Khi tôi đổ toàn bộ đối tượng 'dữ liệu' vào bảng điều khiển, tôi có thể thấy rằng các phím (lồng nhau) cho cấu trúc dữ liệu là 'phân tích cú pháp', 'văn bản' và '*'. Tôi thậm chí có thể đổ các văn bản tôi cần lên đến phím '*'. I E.

var dat = data.parse.text; 

hoạt động. Nó chỉ là nhân vật '*' không muốn được công nhận.

Bất kỳ ý tưởng nào về cách sửa lỗi này? Lý tưởng nhất là tôi muốn có quyền truy cập vào giá trị mà khóa '*' đang tham chiếu. Tôi chỉ không có ý tưởng làm thế nào để lập trình nó trong javascript.

+0

Chỉ cần tò mò, 'callback =? 'Là gì? (Dường như nó hoạt động giống như một cuộc gọi lại trống rỗng, có lẽ vì MediaWiki đang loại bỏ ký tự không hợp lệ.) –

+1

Vâng! Wikipedia/MediaWiki chắc chắn có API khủng khiếp nhất trên thế giới. – Jaseem

Trả lời

8

Ký tự * không được phép như một phần của số nhận dạng (tên biến) trong JavaScript, do đó cú pháp đó không hoạt động. Thay vào đó, bạn có thể sử dụng ký hiệu mảng/chỉ số để truy cập các thuộc tính bằng cách sử dụng bất kỳ chuỗi nào, bất kể đó là số nhận dạng hợp lệ:

var dat = data.parse.text['*']; 
+0

Hoạt động! Cảm ơn bạn đã phản hồi nhanh chóng! – Mephistopheles

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