c# - 在 C# 中反序列化自定义 JSON
问题描述
我正在尝试将一些自定义 JSON 反序列化到字典中,但我很难弄清楚如何处理它。我在拥有 Model 类之前已经完成了它,但是在这种情况下,我需要以特定的方式来完成它。
这是 Json 的样子:
{
Values:
{
"Value1":"XXX",
"value2" :
{
"SubValue1":"YX",
"SubValue2":"AB"
}
}
}
这里的目标是创建一个 Dictionary<string,string> 并填充它,以便:
Key Value
Value1 XXX
Value2 {
"SubValue1":"YX",
"SubValue2":"AB"
}
有没有一种快速的方法可以像这样对它进行脱毒?有关如何轻松完成此操作的任何提示或提示?
解决方案
试试这个,我将你的 json 转换为 Dictionary<string,string>
var json = "{\"Values\":{\"Value1\":\"XXX\",\"value2\":{\"SubValue1\":\"YX\",\"SubValue2\":\"AB\"}}}";
var jsonDeserialized = JsonConvert.DeserializeObject<Root>(json);
Dictionary<string,string> dict = jsonDeserialized.Values.ToDictionary(i => i.Key, j => j.Value.ToString());
dict["value2"] = dict["value2"].Replace("\n", "").Replace("\r", "");
输出
{
"Value1": "XXX",
"value2": "{\"SubValue1\":\"YX\",\"SubValue2\":\"AB\"}"
}
如何使用
string value1 = dict["Value1"];
Value value2 = JsonConvert.DeserializeObject<Value>(dict["value2"]);
Values values = new Values { Value1=value1, Value2=value2 };
价值1
XXX
价值2
{
"SubValue1":"YX",
"SubValue2":"AB"
}
班级
public class Values
{
public string Value1 {get; set;}
public Value Value2 {get; set;}
}
public class Value
{
public string SubValue1 { get; set; }
public string SubValue2 { get; set; }
}
public class Root
{
public Dictionary<string, Object> Values { get; set; }
}
推荐阅读
- forms - 表单提交后如何在Flask中创建动态路由?
- python - python脚本ImportError:在Automator中运行shell脚本时没有名为'webbot'的模块
- regex - sed 在 2 个字符串之间的一行中提取所有匹配项
- javascript - 我该怎么做才能使路径在内容下拉伸?
- javascript - 如何扩展 div 以适应剩余的视口空间但防止子元素再扩大其大小?
- java - 获取错误java在flutter中使用或覆盖带有contacts_service包的已弃用API
- azure-aks - 无法删除 AKS
- android - 如何在不调用 printManager.print 触发 print_dialog_intent 的情况下在 android 中设置打印?
- json - 阻止 Django 呈现 JSON 响应
- python - Plotly:分类散点图格式