C# 反序列化为列表或字符串



非常接近 如何在反序列化 JSON 时定义类中的变量以接收列表<字符串>或字符串?

我更喜欢使用python来解析json。没有测试这个,但确定它有效,现在已经做了几次。#PythonForLife

import json
str = '{
        "Resource" : ["1", "2"]
       }'
j = json.loads(str)
if ( isinstance( str["Resource"], list ):
        print(str["Resource"][0]) //or do whatever
else:
        print(str["Resource"])    //same

我想知道在 C# 中做这样的事情的最佳实践是什么。我有一个像这样的模型

public class RootObject 
{
    public IEnumerable<string> Resource {get; set;)
}

这非常脆弱,因为它是硬编码的,只能处理集合,一旦收到字符串就会中断。我讨厌尝试捕获和使用另一个模型,因为这只是一个属性,我在同一模型中确实有更多类似的属性。为什么这甚至是一个问题?我在这里链接的最佳/更好/有效的解决方案是吗?

您应该使用字典而不是列表,例如:

    class MyClass
    {
        public void Test()
        {
            var x = @"{'Resource' : ['1', '2']}";
            var r = JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(x);
        }
    }
    public static void Main(string[] args)
    {
        var l = new MyClass();
        l.Test();
    }

相关内容

  • 没有找到相关文章

最新更新