How to remove known elements from a JSON[] array in PostgreSQL?
jsonb in Postgres 9.4 or later
Consider the jsonb data type in Postgres 9.4 or later. The 'b' at the end stands for 'binary'. Among other things, there is an equality operator (=) for jsonb. Most people will want to switch.
Depesz blog about jsonb.
json
There is no = operator defined for the data type json, because there is no well defined method to establish equality for whole json values. But see below.
You could cast to text and then use the = operator. This is short, but only works if your text representation happens to match. Inherently unreliable, except for corner cases. See:

How to query a json column for empty objects?

Or you can unnest the array and use the -&gt;&gt; operator to .. get JSON object field as text and compare individual fields.
Test table
2 rows: first one like in the question, second one with simple values.
CREATE TABLE tbl (
   tbl_id int PRIMARY KEY
 , jar    json[]
);

INSERT INTO t VALUES
   (1, '{&quot;{\&quot;value\&quot; : \&quot;03334/254146\&quot;, \&quot;typeId\&quot; : \&quot;ea4e7d7e-7b87-4628-ba50-f5\&quot;}&quot;
        ,&quot;{\&quot;value\&quot; : \&quot;03334/254147\&quot;, \&quot;typeId\&quot; : \&quot;ea4e7d7e-7b87-4628-ba50-f6\&quot;}&quot;
        ,&quot;{\&quot;value\&quot; : \&quot;03334/254148\&quot;, \&quot;typeId\&quot; : \&quot;ea4e7d7e-7b87-4628-ba50-f7\&quot;}&quot;}')

 , (2, '{&quot;{\&quot;value\&quot; : \&quot;a\&quot;, \&quot;typeId\&quot; : \&quot;x\&quot;}&quot;
        ,&quot;{\&quot;value\&quot; : \&quot;b\&quot;, \&quot;typeId\&quot; : \&quot;y\&quot;}&quot;
        ,&quot;{\&quot;value\&quot; : \&quot;c\&quot;, \&quot;typeId\&quot; : \&quot;z\&quot;}&quot;}');

Demos
Demo 1
You could use array_remove() with text representations (unreliable).
SELECT tbl_id
     , jar, array_length(jar, 1) AS jar_len
     , jar::text[] AS t, array_length(jar::text[], 1) AS t_len
     , array_remove(jar::text[], '{&quot;value&quot; : &quot;03334/254147&quot;, &quot;typeId&quot; : &quot;ea4e7d7e-7b87-4628-ba50-f6&quot;}'::text) AS t_result
     , array_remove(jar::text[], '{&quot;value&quot; : &quot;03334/254147&quot;, &quot;typeId&quot; : &quot;ea4e7d7e-7b87-4628-ba50-f6&quot;}'::text)::json[] AS j_result
FROM   tbl;

Demo 2
Unnest the array and test fields of individual elements.
SELECT tbl_id, array_agg(j) AS j_new
FROM   tbl, unnest(jar) AS j   -- LATERAL JOIN
WHERE  j-&gt;&gt;'value' &lt;&gt; '03334/254146'
AND    j-&gt;&gt;'typeId' &lt;&gt; 'ea4e7d7e-7b87-4628-ba50-6a5f6e63dbf5'
GROUP  BY 1;

Demo 3
Alternative test with row type.
SELECT tbl_id, array_agg(j) AS j_new
FROM   tbl, unnest(jar) AS j   -- LATERAL JOIN
WHERE  (j-&gt;&gt;'value', j-&gt;&gt;'typeId') NOT IN (
         ('03334/254146', 'ea4e7d7e-7b87-4628-ba50-6a5f6e63dbf5')
        ,('a', 'x')
       )
GROUP  BY 1;

UPDATE as requested
Finally, this is how you could implement your UPDATE:
UPDATE tbl t
SET    jar = j.jar
FROM   tbl t1
CROSS  JOIN LATERAL (
   SELECT ARRAY(
      SELECT j
      FROM   unnest(t1.jar) AS j  -- LATERAL JOIN
      WHERE  j-&gt;&gt;'value'  &lt;&gt; 'a'
      AND    j-&gt;&gt;'typeId' &lt;&gt; 'x'
      ) AS jar
   ) j
WHERE  t1.tbl_id = 2              -- only relevant rows
AND    t1.tbl_id = t.tbl_id;

db&lt;&gt;fiddle here
About the implicit LATERAL JOIN:

How to turn JSON array into Postgres array?
Query for element of array in JSON column

About unnesting arrays:

How to preserve the original order of elements in an unnested array?

DB design
To simplify your situation consider an normalized schema: a separate table for the json values (instead of the array column), joined in a n:1 relationship to the main table.