C#面对多层嵌套的json 如何取值 封装方法,判断person.firstName 节点是否存在,如果存在返回节点的值,否则返回""
时间: 2024-11-06 22:18:21 浏览: 16
C#操作 JSON方法汇总
在C#中,你可以封装一个方法来解析多层嵌套的JSON并检查特定节点是否存在。这里是一个示例,使用了Newtonsoft.Json库,假设已添加了对它的引用:
```csharp
using Newtonsoft.Json.Linq;
public static class JsonHelper
{
public static string GetNodeValue(JObject json, string path)
{
JToken token;
return json.TryGetToken(path, out token) ? token.Value<string>() : "";
}
[System.Runtime.CompilerServices.MethodImpl(MethodImplOptions.AggressiveInlining)]
private static bool TryGetToken(JObject json, string path, out JToken token)
{
token = null;
string[] parts = path.Split('.');
for (int i = 0; i < parts.Length && token == null; i++)
{
if (!json.TryGetValue(parts[i], out token)) break;
json = token as JObject;
}
return token != null;
}
}
// 使用示例
string jsonString = @"{""person"": {""firstName"": ""John"", ""lastName"": ""Doe""}}";
JObject jsonObj = JObject.Parse(jsonString);
string firstName = JsonHelper.GetNodeValue(jsonObj, "person.firstName");
```
上述方法首先将路径拆分为部分,然后逐级遍历JSON对象,直到找到指定的节点或遇到无效键。如果找到节点,方法会返回其字符串值;如果没有找到,则返回空字符串。
阅读全文