如何在一段时间返回数组并且一段时间返回模型时反序列化json

时间:2019-04-18 20:18:59

标签: c# rest .net-core

我们当前正在使用一个外部api,当有数据时它返回一个json对象,而当它失败时返回一个空的json数组。我正在寻找反序列化json模型的最佳方法,该模型更健壮,然后检查字符串。

当前,我们正在将json作为字符串读取,以查看它是否包含空数组以及是否未反序列化为模型。

空数组

"data_field":[]

数据对象

"data_field":{
"part_one":1,
"part_two":2,
}

1 个答案:

答案 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());
    }
}