Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法访问子节点值JSON_C#_Json_Object_Nested_Uri - Fatal编程技术网

C# 无法访问子节点值JSON

C# 无法访问子节点值JSON,c#,json,object,nested,uri,C#,Json,Object,Nested,Uri,我试图获取一些嵌套在JSON中的数据,即extendedData.e_ETP[“value”],我通过向API发出请求来创建一个包含键LUS_BU和extendedData.e_ETP[“value”]值的列表 但是当我尝试访问该值时,我得到一个错误:无法访问Newtonsoft.Json.Linq.JValue上的子值。 当我在uri中指定“extendedData.e_ETP”不为null的项的id时,它可以工作 问题是,如果LUS_BU为null,我想为它设置一个默认值,如果有,则使用ex

我试图获取一些嵌套在JSON中的数据,即
extendedData.e_ETP[“value”]
,我通过向API发出请求来创建一个包含键LUS_BU和extendedData.e_ETP[“value”]值的列表

但是当我尝试访问该值时,我得到一个错误:无法访问Newtonsoft.Json.Linq.JValue上的子值。

当我在uri中指定“extendedData.e_ETP”不为null的项的id时,它可以工作

问题是,如果LUS_BU为null,我想为它设置一个默认值,如果有,则使用extendedData.e_ETP中的值

这是c代码的一部分:

JSON:


请随时询问您是否需要关于特定点的任何具体细节或澄清。

如评论中所述,如果
e_ETP
为空,则在Json中为
“e_ETP”:空。该场景表示令牌的类型为
JValue
,值为null。在积极情景中,
e_ETP
类型为
JObject

使用以下代码,您可以验证类型并分配
LUS\u ETP

LUS_ETP = jObj["data"]["items"][0]["extendedData"]["e_ETP"].GetType() == typeof(JObject) 
               ? jObj["data"]["items"][0]["extendedData"]["e_ETP"]["value"].Value<string>() 
               : "1";
LUS_ETP=jObj[“数据”][“项目”][0][“扩展数据”][“e_ETP”]。GetType()==typeof(JObject)
? jObj[“数据”][“项目”][0][“扩展数据”][“e_ETP”][“值”]。值()
: "1";

这不是有效的JSON。在包含对象之外有一个属性(
“data”
),在对象中嵌套了一个不属于属性的对象(请参见
“items”
数组中的第一项)。正如@John所述,Json无效。检查我修复Json的屏幕截图——使用。你发布的Json有大括号和逗号问题。我相应地编辑了Json部分,在尝试匿名化信息时犯了错误。谢谢我在复制你的场景时没有发现任何问题。检查这把小提琴——它适用于
string
类型转换和
ToObject()
函数。首先,感谢检查,我再次编辑了JSON,当
extendedData.e_ETP
为空时,我得到了错误。它工作得非常好,非常感谢您的耐心和解释。
{
  "header": {
    "generated": "2021-01-22T16:12:53.4193558",
    "serverTime": 1395,
    "queryTime": 169,
    "queryCount": 18,
    "principal": "API Integration",
    "processId": 6956
  },
  "data": {
    "items": [
      {
        "id": 6,
        "firstName": "John",
        "lastName": "Doe",
        "employeeNumber": "2",
        "personalAccount": "Z0",
        "userAxisValues_1": {
          "id": 10,
          "name": "FT04 SALES",
          "url": "https://ilucca.net/api/v3/axissections/48"
        },
        "legalEntityID": 1,
        "mail": "random@mail.com",
        "dtContractEnd": "2020-01-30T00:00:00",
        "dtContractStart": "2000-06-18T00:00:00",
        "manager": {
          "name": "John Doe"
        },
        "birthDate": "1959-08-23T00:00:00",
        "seniorityDate": "2010-06-18T00:00:00",
        "gender": "Female",
        "extendedData": {
          "e_ETP": null,
          "e_contracttype": {
            "id": 9556,
            "value": 16
          }
        }
      }
    ]
  },
  "metadata": null
}

LUS_ETP = jObj["data"]["items"][0]["extendedData"]["e_ETP"].GetType() == typeof(JObject) 
               ? jObj["data"]["items"][0]["extendedData"]["e_ETP"]["value"].Value<string>() 
               : "1";