System.JSON不会为格式错误的JSON输入引发异常

时间:2019-01-24 15:13:58

标签: c# json

我对使用.NET System.JSON是陌生的。使用此示例应用程序尝试学习。

[DataContract]
        internal class Person
        {
            [DataMember]
            internal string name;

            [DataMember]
            internal int age;
        }

    String strData = "{ \"Person\": [{\"name\":\"TSR\",\"age\": 4 },{\"name\":\"KV\",\"age\":10}]}";
    MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strData));
    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Person));
    Person jsonArray = (Person)ser.ReadObject(ms) as Person;

我正在通过提供示例输入来测试程序。请注意,输入中缺少最后一个Curley括号。我期望程序抛出某种异常,但事实并非如此。这是System.JSON的预期行为吗?

"{ \"Person\": [{\"name\":\"TSR\",\"age\": 4 },{\"name\":\"KV\",\"age\":10}]";

下面的输入在末尾有一个额外的斜杠。此输入也不会引发异常。

"{ \"Person\": [{\"name\":\"TSR\",\"age\": 4 },{\"name\":\"KV\",\"age\":10}]}}";

1 个答案:

答案 0 :(得分:0)

告诉System.Json将您的字符串解析为JsonValue。如果有效,它将通过-如果无效,则应引发异常

try
{
    var validJson = JsonValue.Parse(strData);
}
catch (FormatException e)
{
    //Invalid Json Format
    Console.WriteLine(e);
} 
catch (Exception e)
{
    //some other exception
}