c# - C# 反序列化为列表或字符串
问题描述
非常接近如何在类中定义变量以在反序列化 JSON 时接收 List<string> 或字符串?
我更喜欢用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;)
}
这非常脆弱,因为它是硬编码的,只能处理集合,一旦收到字符串就会中断。我讨厌尝试捕获并使用另一个模型,因为这只是一个属性,在同一个模型中我确实有更多这样的属性。为什么这甚至是一个问题?我在这里链接的是最好/更好/工作的解决方案吗?
解决方案
您应该使用 Dictionary 而不是 List 例如:
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();
}
推荐阅读
- css - 如何设置 WordPress 高级自定义字段提供的动态文本样式?
- python - 使用新列名迭代合并熊猫列
- database - 在编程语言和数据库中存储日期和时间的不同结构是如何工作的?
- css - Bootstrap 下拉菜单:无法更改锚链接的颜色及其项目文本颜色
- typescript - (打字稿)您能否验证部分返回类型中的所有可能属性在编译时是否可以选择性地映射到新对象上?
- assembly - 在汇编语言编程中用星号替换元音
- wpf - WPF中系统托盘图标的暗/亮模式
- mongodb - 如何组合/合并 2 个 pymongo 查询的输出?
- queue - 如何通过核心 API 更改 ActiveMQ Artemis 队列的路由类型
- python - Python 中的 Playsound 模块不会播放第二个可选参数值为 False 的声音