PostgreSQL: Find row with JSON object attribute in array
You need to unnest the array elements and combine that with an EXISTS condition

select t.*
from arr_test t
where exists (select *
              from jsonb_array_elements(t.data -&gt; 'my_arr') as x(o)
              where x.o -&gt;&gt; 'serial' = 'AAA');


Alternatively you can write that with a contains operator @&gt;:

select t.*
from arr_test t
where exists (select *
              from jsonb_array_elements(t.data -&gt; 'my_arr') as x(o)
              where x.o @&gt; '{"serial": "AAA"}');


Try it on dbfiddle