3

I'm using newtonsoft's JSON.Net and loving every minute of it.

However, I am using JObject.Parse(jsonString) to grab a JToken from a response string. If I send invalid JSON, I get an exception. I can catch the exception, but I would like to, be able to test the string first before sending it to Parse.

Maybe something akin to JObject.TryParse() (which doesn't exist).

I'd even take bool ValidJson(string)

I know there's JSONLint out there, but I would really like to keep the external calls to a minimum.

Any ideas?

Paul Sonier
  • 38,903
  • 3
  • 77
  • 117
Rob
  • 2,080
  • 4
  • 28
  • 48

3 Answers3

5

The simplest solution would be to write a function which calls JObject.Parse and returns false if it throws a Newtonsoft.Json.JsonReaderException.

knocte
  • 16,941
  • 11
  • 79
  • 125
MRAB
  • 20,356
  • 6
  • 40
  • 33
3

Use JContainer.Parse(str) method to check if the str is a valid Json. If this throws exception then it is not a valid Json.

JObject.Parse - Can be used to check if the string is a valid Json object
JArray.Parse - Can be used to check if the string is a valid Json Array
JContainer.Parse - Can be used to check for both Json object & Array
Community
  • 1
  • 1
0

A working code snippet

public bool isValidJSON(string json)
{
    try
    {
        JToken token = JObject.Parse(json);
        return true;
    }
    catch(Exception ex)
    {
        return false;
    }
}

Thanks to MRAB

Community
  • 1
  • 1
Durai Amuthan.H
  • 31,670
  • 10
  • 160
  • 241