2012-09-09 10 views
2

배경 :파이썬 jsonpath 필터 식

I JSON에서 다음 예제 데이터 구조가 있습니다

{'sensor' : [ 
    {'assertions_enabled': 'ucr+', 
    'deassertions_enabled': 'ucr+', 
    'entity_id': '7.0', 
    'lower_critical': 'na', 
    'lower_non_critical': 'na', 
    'lower_non_recoverable': 'na', 
    'reading_type': 'analog', 
    'sensor_id': 'SR5680 TEMP (0x5d)', 
    'sensor_reading': {'confidence_interval': '0.500', 
        'units': 'degrees C', 
        'value': '42'}, 
    'sensor_type': 'Temperature', 
    'status': 'ok', 
    'upper_critical': '59.000', 
    'upper_non_critical': 'na', 
    'upper_non_recoverable': 'na'} 
]} 

센서 목록이 실제로 센서 정보를 포함하는 이러한 dicts을 많이 포함됩니다.

문제 :

내가 나에게 sensor_type=='Temperature'이 센서 dicts의 하위 집합을 반환 jsonpath를 사용하여 목록을 조회하기 위해 노력하고있어하지만 난 'False'이 (일치)을 반환 받고 있어요. 여기 내 jsonpath 표현입니다 :

results = jsonpath.jsonpath(ipmi_node, "$.sensor[?(@.['sensor_type']=='Temperature')]") 

나는 필터 식을 제거하고 그냥 모든 센서의 목록을, 그래서 문제가 필터 식에 확신 "$.sensor.*"를 사용하는 경우.

예를 들어 여러 사이트/게시물을 스캔했는데 파이썬 (자바 스크립트 및 PHP가 더 눈에 띄는 것)과 관련된 특정 항목을 찾을 수없는 것 같습니다. 아무도 좀 도와 줄래?

답변

3

다음 표현식은 (속성을 지정하는 방법을 알) 필요하지 않습니다 '.'를 제거하고 나를 위해 일하고 결국 무엇을,

jsonpath.jsonpath(impi_node, "$.sensor[?(@.sensor_type=='Temperature')]") 
+0

을 실제로 @. [ 'sensor_type']. 분명히 그것은 단지 @ [ 'sensor_type']입니다. –

+0

아마도 두 가지 형식이 유효합니다. –

+0

"jsonpath"는 어디에서 찾았습니까? 여기에 링크가 없습니다 https://pypi.python.org/simple/jsonpath/? – avloss