我们当前正在使用一个外部api,当有数据时它返回一个json对象,而当它失败时返回一个空的json数组。我正在寻找反序列化json模型的最佳方法,该模型更健壮,然后检查字符串。
当前,我们正在将json作为字符串读取,以查看它是否包含空数组以及是否未反序列化为模型。
空数组
"data_field":[]
数据对象
"data_field":{
"part_one":1,
"part_two":2,
}
答案 0 :(得分:-1)
使用类似this的类:
using System;
using Newtonsoft.Json.Linq;
public class Program
{
public static void Main()
{
Test(JToken.Parse("{}")); // empty object
Test(JToken.Parse("[]")); // empty array
Test(JToken.Parse("\"\"")); // empty string
Test(JToken.Parse("null")); // null value
}
private static void Test(JToken token)
{
Console.WriteLine("Type: " + token.Type.ToString());
Console.WriteLine("Token: " + token.ToString());
Console.WriteLine("IsEmpty1: " + token.IsNullOrEmpty().ToString());
Console.WriteLine("IsEmpty2: " + token.IsNullOrEmpty2().ToString());
Console.WriteLine();
}
}
public static class JsonHelper
{
public static bool IsNullOrEmpty(this JToken token)
{
return (token == null) ||
(token.Type == JTokenType.Array && !token.HasValues) ||
(token.Type == JTokenType.Object && !token.HasValues) ||
(token.Type == JTokenType.String && token.ToString() == String.Empty) ||
(token.Type == JTokenType.Null);
}
public static bool IsNullOrEmpty2(this JToken token)
{
return token == null || string.IsNullOrWhiteSpace(token.ToString());
}
}