diff --git a/src/JSON.jl b/src/JSON.jl index 2b424d0..3cb784d 100644 --- a/src/JSON.jl +++ b/src/JSON.jl @@ -87,8 +87,13 @@ function isvalidjson end isvalidjson(io::Union{IO, Base.AbstractCmd}; kw...) = isvalidjson(Base.read(io); kw...) -isvalidjson(buf::Union{AbstractVector{UInt8}, AbstractString}; kw...) = - isvalidjson(lazy(buf; kw...)) +function isvalidjson(buf::Union{AbstractVector{UInt8}, AbstractString}; kw...) + try + return isvalidjson(lazy(buf; kw...)) + catch + return false + end +end function isvalidjson(x::LazyValue) try diff --git a/test/parse.jl b/test/parse.jl index 1a71312..c4d065e 100644 --- a/test/parse.jl +++ b/test/parse.jl @@ -282,6 +282,9 @@ end @test JSON.isvalidjson(io) end @test JSON.isvalidjson("{}") + @test !JSON.isvalidjson("{JSON") + @test !JSON.isvalidjson("JSON") + @test !JSON.isvalidjson(collect(codeunits("JSON"))) x = JSON.parse("{}") @test isempty(x) && typeof(x) == JSON.Object{String, Any} @test_throws ArgumentError JSON.parse(JSON.LazyValue(".", 1, JSON.JSONTypes.OBJECT, JSON.LazyOptions(), true))