在C#中,如果不使用递归的情况下从嵌套JSON中查找属性值,可以使用循环迭代的方法来实现。下面是一个示例代码:
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
public class Program
{
public static void Main()
{
string json = @"{
'name': 'John',
'age': 30,
'address': {
'city': 'New York',
'country': 'USA'
}
}";
JObject jsonObject = JObject.Parse(json);
string targetProperty = "city";
JToken targetValue = FindPropertyValue(jsonObject, targetProperty);
if (targetValue != null)
{
Console.WriteLine($"The value of '{targetProperty}' is '{targetValue}'");
}
else
{
Console.WriteLine($"The property '{targetProperty}' does not exist");
}
}
public static JToken FindPropertyValue(JObject jsonObject, string propertyName)
{
JToken targetValue = null;
JToken currentToken = jsonObject;
while (currentToken != null)
{
if (currentToken is JObject)
{
foreach (JProperty property in ((JObject)currentToken).Properties())
{
if (property.Name == propertyName)
{
targetValue = property.Value;
break;
}
}
}
if (targetValue != null)
{
break;
}
if (currentToken is JArray)
{
foreach (JToken childToken in ((JArray)currentToken).Children())
{
if (childToken is JObject)
{
targetValue = FindPropertyValue((JObject)childToken, propertyName);
if (targetValue != null)
{
break;
}
}
}
}
currentToken = currentToken.Next;
}
return targetValue;
}
}
上述代码使用了Json.NET库来解析JSON字符串,并通过循环迭代的方式在嵌套的JSON中查找属性值。在主函数中,定义了一个JSON字符串和目标属性名。然后,调用FindPropertyValue
方法来查找属性值,该方法会遍历JSON对象及其子对象,并逐层查找目标属性。
在运行上述代码后,如果目标属性存在,则会打印出属性值;如果目标属性不存在,则会提示该属性不存在。
值得注意的是,为了使示例代码更易读,JSON字符串中的引号使用了单引号来表示。实际使用时,应该使用双引号来表示属性名和属性值。
关于腾讯云相关产品和产品介绍链接地址,请访问腾讯云官方网站(https://cloud.tencent.com/)以获取更详细的信息。
领取专属 10元无门槛券
手把手带您无忧上云