非常接近 如何在反序列化 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();
}