2012-05-28 2 views
5

JSON 사전 반복 - 전체 버전에 대한 http://mapit.mysociety.org/point/4326/0.1293497,51.5464828을하지만,이처럼 축약 : 만 개체의 이름을 추출 할구글 조정 : 나는 구글 조정 내에서 일부 JSON있어

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

을 (고유 한 것으로 가정) 유형은 WMC입니다.

Parse JSON in Google Refine은 도움이되지 않습니다. 그게 사전이 아니라 배열을 사용하는 것입니다.

이 문제를 해결하려면 무엇을 제안해야합니까?


편집 : 나는 초기 키가 무엇인지 모르는 : 나는 그들이 내가 미리 예측할 수있는 고유 식별자있어 생각합니다.

답변

4

Refine은 현재 키를 알 수없는 곳의 dict 키를 반복하는 방법을 알지 못합니다 (해당 기능을 구현하려고하지만).

현재 구현에서이 작업을 수행하는 요령은 JSON 객체를 JSON 배열로 변환하는 것입니다. 다음 GREL 표현식은 JSON으로 결과를 구문 분석하고 배열의 모든 요소를 ​​반복하며 'WMC'유형의 이름을 제공합니다.

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

"이 열을 기반으로 열 추가"명령으로 해당 식을 사용하여 새 WMC 이름 열을 만듭니다. 거기에이 유형의 더 이상의 이름이있을거야 기회가 그리고 당신이 그들 모두를 원하는 경우, 당신은 foreach 루프에 추가하고

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

의 라인을 따라 가입이 당신에게 파이프로 구분 된 목록을 제공합니다 수 있습니다 "다중 값 셀 분할"을 사용하여 분리 할 수 ​​있습니다.

잘하면 다음 릴리스에서 더 쉬울 것입니다!

+0

더 간단한가? – coreyward

+0

주제에서 약간 벗어났습니다. 사람들이 일반 JavaScript를 사용할 수있게 할 계획입니까? 3 줄을 넘지 않는 간단한 js 프로그램을 사용하면 쉽게 달성 할 수 있습니다. (BTW, 당신은 몇 가지 추가 기능을 가진 일반 js에 GREL을 선택 했습니까?) – opensas