C#读取嵌套JSON对象遇System.ArgumentNullException问题求助
问题分析与解决
错误原因
你碰到的System.ArgumentNullException是因为要读取的nationalId、surname、givenNames字段不在JSON根节点下,而是嵌套在return对象里。直接用person_jObject["nationalId"]访问会返回null,再调用Value<string>()自然触发了空引用异常。
修正后的代码
先获取嵌套的return子对象,再从中读取目标字段:
JObject person_jObject = JObject.Parse(content5); // 先拿到return对应的子对象 JObject returnObj = person_jObject["return"].Value<JObject>(); person.nationalId = returnObj["nationalId"].Value<string>(); person.surname = returnObj["surname"].Value<string>(); person.givenNames = returnObj["givenNames"].Value<string>();
更安全的写法(防空处理)
如果担心return节点本身可能为空,可以加一层空值判断,避免再次抛出异常:
JObject person_jObject = JObject.Parse(content5); if (person_jObject.TryGetValue("return", out JToken returnToken) && returnToken is JObject returnObj) { person.nationalId = returnObj["nationalId"]?.Value<string>() ?? string.Empty; person.surname = returnObj["surname"]?.Value<string>() ?? string.Empty; person.givenNames = returnObj["givenNames"]?.Value<string>() ?? string.Empty; }
内容的提问来源于stack exchange,提问作者Nelson Kibet
相关产品推荐
相关产品推荐

