c# - 不一致的 JSON
问题描述
我试图在 C# 中解析不一致的 JSON,即下面是我得到的 JSON 示例。
{
"Timestamp" : "2019-05-09T11:24:25.000Z",
"Channel" : "web",
"Supplier" : "kunde",
"Generator" : "survey",
"Type" : "hudtest",
"Data" :{
"Alder" : "20-29",
"Køn" : "Kvinde",
"Hudtype" : "sensitiv",
"Hudtilstand" : "mixet"
}
}
这个 JSON 的变体是这样的:
{
"Timestamp" : "2019-05-09T11:24:25.000Z",
"Channel" : "web",
"Supplier" : "kunde",
"Generator" : "survey",
"Type" : "hudtest",
"Data" :{
"Alder" : "20-29",
"Køn" : "Kvinde",
"Hudtype" : "sensitiv",
"Hudtilstand" : "mixet",
"materialistID" : 61234,
"Anbefalede produkter" : [ 100225, 725125 ]
}
}
正如您在两个示例中看到的那样,我的Data
键值不同。如何在 C# 中解析这个 JSON?
仅供参考:Data
密钥可以具有与我上面分享的示例不同的值。不仅"Anbefalede produkter
。它可以包含许多不同的值。我也尝试过制作dynamic
或解析为anonymous
类型。但我也想验证我的 JSON 模式,除了Data
Key 必须验证其他键并且它们是强制性的。
解决方案
你可以这样做
class Program
{
static void Main(string[] args)
{
string jsonData = @"{ 'Timestamp': '2019-05-09T11:24:25.000Z',
'Channel': 'web',
'Supplier': 'kunde',
'Generator': 'survey',
'Type': 'hudtest',
'Data': {
'Alder': '20-29',
'Køn': 'Kvinde',
'Hudtype': 'sensitiv',
'Hudtilstand': 'mixet',
'materialistID': 61234,
'Anbefalede produkter': [100225, 725125]
}
}";
var b = JsonConvert.DeserializeObject<Rootobject>(jsonData);
//Console.WriteLine(b.Data.Hudtype);
//or
Console.WriteLine(b.Data["Hudtype"]);
Console.ReadKey();
}
}
public class Rootobject
{
public DateTime Timestamp { get; set; }
public string Channel { get; set; }
public string Supplier { get; set; }
public string Generator { get; set; }
public string Type { get; set; }
public Dictionary<string, object> Data { get; set; }
}
希望这能解决您的问题。谢谢
推荐阅读
- git - 如何从 Sourcetree github 项目中删除提交
- python - 将 pipenv 与 gitlab ci 一起使用
- python - 我有一个 python cgi 脚本,我想将每一行的状态或退出代码存储在一个文本文件中?
- python-2.7 - Python 中的 Flask-Ask 自定义 Alexa 技能
- c++ - QSyntaxHighlighter 和多行注释
- javascript - 反应:在 Child 上的 setState 正在更新数组属性类型上的父级状态
- tensorflow - 什么是并行构建/执行for循环Tensorflow图的好方法?
- javascript - 如何在 Electron 中保存大文件?
- php - 我添加到此表单的数据未添加到 WAMP 数据库
- post - 发布请求使用 HttpClient Angular 5 给出 401 Unauthorized user 错误