2012-05-28 29 views
5

tôi đã có một số JSON trong Google Lọc - http://mapit.mysociety.org/point/4326/0.1293497,51.5464828 cho phiên bản đầy đủ, nhưng viết tắt đó là như thế này:Google Lọc: lặp trên một cuốn từ điển JSON

{1234: {'name': 'Barking', 'type': 'WMC'}, 
5678: {'name': 'England', 'type': 'EUR'} } 

Tôi chỉ muốn trích xuất tên cho đối tượng với loại (được cho là duy nhất) WMC.

Parse JSON in Google Refine không giúp ích, điều đó hoạt động với các mảng, chứ không phải là ma thuật.

Bất kỳ đề xuất nào tôi nên xem xét để khắc phục sự cố này?


Sửa: Tôi không biết những gì các phím ban đầu là: Tôi tin rằng họ đang định danh duy nhất mà tôi không thể dự đoán trước thời hạn.

Trả lời

4

Tinh chỉnh hiện không biết cách lặp lại thông qua các phím của dict nơi khóa của chúng không xác định (mặc dù tôi sắp triển khai chức năng đó).

Bí quyết để làm việc này với việc triển khai hiện tại là chuyển đổi đối tượng JSON thành một mảng JSON. Biểu thức GREL sau sẽ làm điều đó, phân tích cú pháp kết quả dưới dạng JSON, lặp qua tất cả các phần tử của mảng và cung cấp cho bạn tên đầu tiên của loại 'WMC'.

filter(('['+(value.replace(/"[0-9]+":/,""))[1,-1]+']').parseJson(),v,v['type']=='WMC')[0]['name'] 

Sử dụng biểu thức đó với cột "Thêm cột dựa trên cột này" để tạo cột tên WMC mới. Nếu có một cơ hội mà sẽ có nhiều hơn một tên thuộc loại này và bạn muốn tất cả chúng, bạn có thể thêm vào một vòng lặp foreach và tham gia dọc theo dòng của

forEach(filter(('['+(value.replace(/"[0-9]+":/,""))[1,-1]+']').parseJson(),v,v['type']=='WMC'),x,x['name']).join('|') 

này sẽ cung cấp cho bạn một danh sách ống tách các tên mà bạn có thể tách ra bằng cách sử dụng "Tách các ô có nhiều giá trị".

Sẽ dễ dàng hơn trong bản phát hành tiếp theo hy vọng!

+0

Mọi cập nhật về việc điều này đã được thực hiện đơn giản chưa? – coreyward

+0

hơi ngoài chủ đề. Bạn có định cho phép mọi người sử dụng JavaScript đơn giản không? với một chương trình js đơn giản không quá 3 dòng, nó sẽ khá dễ dàng và đơn giản để đạt được. (BTW, whay bạn đã chọn GREL trên đồng bằng js với một số chức năng bổ sung?) – opensas

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