c# - 如何使用 C# 判断 Json 元素是否存在(使用 Newtonsoft NugetPackages)
问题描述
我有 Json 文件,我正在尝试使用一些数据条件解析 json 文件的数据以进行数据库更新,目前我想检查是否存在特定元素。在我当前的 Json 数据中,在操作节点下 accessRef 可以存在于文件中或可能不完全存在。那么如何检查条件。请建议我。
下面是Json文件
{
"PLMXML":{
"language":"en-us",
"time":"16:50:15",
"schemaVersion":"6",
"author":"Development(-2069033203)",
"date":"2020-05-22",
"Header":{
"id":"id1",
"traverseRootRefs":"#id6",
"transferContext":"CLM"
},
"Operation":{
"id":"id21",
"name":"PD_Op2",
"subType":"BS4_BaOP",
"accessRefs":"#id18",
"catalogueId":"70700000209604",
"ApplicationRef":{
"application":"Teamcenter",
"label":"yDX58d4FIpN8QD",
"version":"yDX58d4FIpN8QD"
}
}
}
}
在我尝试执行的代码下方
public void Readjsonfile(string jsondata)
{ var message = JsonConvert.DeserializeObject<plmxmldatamodel>(jsondata);
Console.WriteLine("RootRef: " + message.PLMXML.Header.traverseRootRefs);
Console.WriteLine("OccurenceId: "+message.PLMXML.ProductView.Operation.id);
// I want to check whtether is accessrefs is present or not inside the Operation element
}
//fuction1
public class Header
{ public string traverseRootRefs { get; set; }
}
//fuction2
public class Operation
{ public string id { get; set; }
public string name { get; set; }
public string subType { get; set; }
public string accessRefs { get; set; }
public string catalogueId { get; set; }
}
//fuction3
public class PLMXML
{
public string language { get; set; }
public Header Header { get; set; }
public Operation Operation { get; set; }
}
//fuction4
public class plmxmldatamodel
{
public PLMXML PLMXML { get; set; }
}
解决方案
如果空/空值accessRefs
是有效的情况(即... "'accessRefs':, ..."
),那么您可以使用JSON Path检查它是否存在:
var jObj = JObject.Parse(jsondata);
if(jObj.SelectToken("$.PLMXML.Operation.accessRefs") != null)
{
// do what you want to do if accessRefs exists
}
否则只需检查message.PLMXML.ProductView.Operation.accessRefs
不为空:
if(message.PLMXML.ProductView.Operation.accessRefs != null)
{
// do what you want to do if accessRefs exists
}
推荐阅读
- angular - Linting Angular 项目在 CI/CD 管道中需要很长时间
- sql - 如何在SQL中按列值获取增量rowid
- c# - MongoDB增量与对应列的限制c#
- r - 将定制功能应用于列对并创建汇总表
- android - 如何使用 CameraX 禁用降噪
- javascript - jquery remove() 只跳过选择选项,而不是删除它们
- html - 从简单 Rmarkdown 网站的索引页中排除页脚
- puppeteer - 如何使用 Puppeteer 检查特定元素(不是页面)上是否存在文本
- python - Kivy 对象没有属性(不透明度)
- kubernetes - rancher 服务器关闭时无法访问 rancher/k8s 集群