Logstash config for file containing both json and text

How about using a conditional to only parse it as JSON if it looks like JSON?

filter {
  if [message] =~ /^{"/ {
    json {
      source => "message"
    }
  } else { 
    # do other stuff
  }
}