JSON прогоняется через $modx->fromJSON($json), на выходе получается массив условий, чтобы он был верно разобран нужно соблюдать определенные правила, об этом подробнее можно почитать тут rtfm.modx.com/xpdo/2.x/class-reference/xpdoquery/xpdoquery.where Собственно все можете проверять в консоли modx. $where = array( array( "available:="=>"0" ,"AND:toOrder:="=>"1" ) ,"OR:available:="=>"1" ); $c = $modx->newQuery('modResource'); $c->where($where); $c->select('id'); $c->prepare() echo $c->toSQL(); Вернет: SELECT id FROM modx_site_content AS modResource WHERE ( ( modResource.available = '0' AND modResource.toOrder = '1' ) OR modResource.available = '1' ) А если сделать вот так: echo $modx->toJSON($where); получите вашу JSON строку: {"0":{"available:=":"0","AND:toOrder:=":"1"},"OR:available:=":"1"}