2013-03-09 17 views
6

Pracuję nad systemem do wyprowadzania pliku JSON i używam Pythona do parsowania danych i wyświetlania ich w interfejsie użytkownika (PySide). Chciałbym teraz dodać filtrowanie do tego systemu i myślę, że zamiast pisać system zapytań, gdyby był tam jeden dla JSON (w Pythonie), zaoszczędziłoby mi to wiele czasu na rozwój. Znalazłem ten wątek:język zapytań strukturalnych dla JSON (w języku Python)

Is there a query language for JSON?

ale to bardziej dla systemu opartego na sieci Web. Wszelkie pomysły na odpowiednik w Pythonie?

EDIT [dla jasności]:

Format dane, które będę generowania jest tak:

{ 
    "Operations": [ 
    { 
     "OpID": "0", 
     "type": "callback", 
     "stringTag1": "foo1", 
     "stringTag2": "FooMsg", 
     "Children": [...], 
     "value": "0.000694053" 
    }, 
    { 
     "OpID": "1", 
     "type": "callback", 
     "stringTag1": "moo1", 
     "string2": "MooMsg", 
     "Children": [...], 
     "value": "0.000468427" 
    } 
} 

Gdzie dzieci mogą być zagnieżdżone tablice tej samej rzeczy (inne operacje). System zostanie zbudowany, aby umożliwić użytkownikom dodawanie własnych tagów do danych. Miałem nadzieję, że system zapytań pozwoli użytkownikom zdefiniować własne "filtry", stąd pytanie o język zapytań. Gdyby było coś, co pozwoliłoby mi zrobić coś w stylu "SELECT * WHERE", wpisz "==" callback "i odzyskaj wymagane operacje, byłoby świetnie

Sugestia Pync jest interesująca, dam to spojrzenie

+0

Wydaje się to dość otwartym pytaniem, które może wymagać więcej badań, zanim znajdzie się w tym miejscu. –

+0

Czy możesz podać przykład jsona, z którym chcesz pracować, a także oczekiwane zapytanie? – cwgem

Odpowiedz

6

Pomyślałem o tym trochę, a ja pochylam się do czegoś mniej konkretnego, takiego jak "JSON Query Language" i uważam za coś bardziej ogólnikowego. Przypomniałem sobie, że pracowałem z C# nieco, że mieli nieco ogólny system zapytań o nazwie LINQ do obsługi tego rodzaju problemów z zapytaniami:

Wygląda na to, że Python ma coś podobnego o nazwie Pynq, która obsługuje podstawowe zapytania takie jak:

filtered_collection = From(some_collection).where("item.property > 10").select_many() 

Wygląda na to, że ma pewną podstawową nazwę: aggregation functions. Chociaż nie jest to specyficzne dla JSON, uważam, że jest to przynajmniej dobry punkt wyjścia do odpytywania.

Powiązane problemy