如何使用C#(与Newtonsoft NugetPackages一起使用,如何存在Json Element)

问题描述 投票:0回答:1

我有Json文件,我正在尝试使用一些数据条件解析json文件的数据以进行数据库更新,目前我要检查是否存在特定元素。在我当前的Json数据中,在Operation Node下, 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; }
}
c# .net json.net nuget-package .net-framework-version
1个回答
0
投票

如果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是否不为空。

© www.soinside.com 2019 - 2024. All rights reserved.