How to switch between PrettyContext and CompactContext in JSON package?

I want to write .json from DataFrame
But I want to write some element to be indented, and some are not indented

Here is a minimal example

using DataFrames
using JSON

function JSON.show_json(io::SC, s::CS, df::DataFrame)
    JSON.begin_array(io)
    for (i, row) in enumerate(eachrow(df))
        JSON.indent(io)
        JSON.begin_object(io)
        for el in row
            if isa(el[2], Array{T} where T <: AbstractString) || isa(el[2], Array{T} where T <: Number)
                JSON.show_key(io, el[1])
                JSON.show_json(io, s, el[2])
            else
                JSON.show_pair(io, s, el)
            end
        end
        JSON.end_object(io)
        i != nrow(df) && JSON.delimit(io)
    end
    JSON.end_array(io)
end

df = DataFrame(element = [1], array = [[100,200]])
JSON.json(df, 2) |> clipboard

Which gives me

[
  {
    "element": 1,
    "array": [
      100,
      200
    ]
  }
]

What I want it to be is

[
  {
    "element": 1,
    "array": [100,200]
  }
]

I’ve figured that I should switch between PreetyContext and CompactContext in IO based on datatype would be an elegant solution, but I don’t know how to implement it.

Thank for your time :smile: