Are you going through the hard way to filter your view?
Try these sample (it is possible but not efficient)
Drop table if exists emp;
create table emp (emp int,ename varchar(10),sal decimal(6,2))
insert into emp values(1,'name1',1000),(2,'abc',2000),(3,'def',3000)
go
Drop view if exists abc;
go
Create view abc
(jsonCol)
as
select emp,ename,sal
from emp for json auto
go
--example 1
;with mycte as (
SELECT *
FROM OPENJSON(CONVERT(NVARCHAR(MAX),(select jsonCol from abc)))
WITH
(
emp int,
ename VARCHAR(200) '$.ename',
sal decimal(6,2) '$.sal'
)
WHERE emp = '1' )
Select * from mycte for json auto
--example 2
;with mycte2 as (
SELECT *
FROM OPENJSON(CONVERT(NVARCHAR(MAX),(select * from abc)))
WITH
(
emp int,
ename VARCHAR(200) '$.ename',
sal decimal(6,2) '$.sal'
)
WHERE ename = 'abc'
)
Select * from mycte2 for json auto