YAJT

About

Tutorial

Links

Sourceforge

The JSON query path

La grande novità di questa implementazione di JSON in Java riguarda l'inclusione di un processore di query stile XPath in XML.
L'interfaccia del processore è definita sempre nel package net.sourceforge.yajt, mentre la sua implementazione è definita mediante un'altra grammatica ANTLR, in quanto può validare la sintassi della query e contemporaneamente eseguire la selezione desiderata.
Prima di passare a possibili utilizzi, è bene illustrare la breve sintassi delle query, spiegando una scelta di base che ho dovuto prendere prima di procedere all'implementazione: se andate a visitare il sito di riferimento di JSON e date uno sguardo a come viene definita una chiave di un oggetto JSON, è facile accorgersi che questa può possedere al suo interno il carattere /.
Quindi la query-path, è una sequenza di chiavi e di indici, dove le chiavi sono espresse come "myKey" mentre gli indici sono espressi dalla sintassi [index], separati dal classico carattere /. Data la struttura dati:

{
	"keyA": [
		true, 
		false, 
		null, 
		{
			"keyB" : 123.4E-25,
			"test": "",
			"test2": "my String",
			"keyC" : {
				"keyD" : false
			}
		}
	]
}
Che supponiamo di aver già parsato, dobbiamo innanzitutto recuperare una istanza del processore per le query:
JSONObject myObject = ...
JSONPath selector = JSONFactory.newPathSelector();
Possiamo definire ora una query che selezioni l'elemento identificato dalla chiave KeyD come segue:
String selectionPath = "\"keyA\"/[3]/\"keyC\"/\"keyD\"";
Ed infine eseguire la query:
Object selected = selector.selectNode(selectionPath, myObject);