Linters with multiline output

I’m trying to add :lint support for the Elm compiler. It has errors that look like this (for example when misspelling Int as It):

I cannot find a `It` type:

16| one : It
          ^^
These names seem close though:

    Int
    List
    Cmd
    Sub

Hint: Read <https://elm-lang.org/0.19.1/imports> to see how `import`
declarations work in Elm.)

Fortunately the compiler has a flag --output=json which lets me get the location information in a structured way so that I can output filename:line:column: error: ..., but the error message itself is fairly incompressible, especially to a single line! Adding to that, the error messages frequently have embedded colons (e.g. to show the part of the source that’s bad, or to add a link to docs.)

It looks like :lint can only work with single-line lint messages without colons, so am I just out of luck here? Am I doing to have to end up writing something like :grep that’s custom for this compiler?