C# 解析复杂json字符串的最佳实践

C# 解析复杂json字符串的最佳实践,c#,json,parsing,yql,C#,Json,Parsing,Yql,我正在学习C#,并决定作为一个项目尝试解析一些JSON。我正在使用JSON.NET包,这使它变得非常简单。我想知道是否有更好的方法来深入JSON内部的元素,而不是使用像[object].[innerObject].[innerObject].[innerObject].[innerObject].name这样的东西 下面是讨论中的JSON(从中获得) 就目前的设置方式而言,这就是我获得“Yahoo!Weather-SunnyVale,CA”称号的原因 这似乎很不自然,可能会变得难以阅读。有没有更

我正在学习C#,并决定作为一个项目尝试解析一些JSON。我正在使用JSON.NET包,这使它变得非常简单。我想知道是否有更好的方法来深入JSON内部的元素,而不是使用像[object].[innerObject].[innerObject].[innerObject].[innerObject].name这样的东西

下面是讨论中的JSON(从中获得)

就目前的设置方式而言,这就是我获得“Yahoo!Weather-SunnyVale,CA”称号的原因


这似乎很不自然,可能会变得难以阅读。有没有更好的方法来调用这些深层JSON元素

您可以将其拆分为多行,以避免长行重复代码。例如:

var channel = wInfo.query.results.channel;
var title = channel.title;
var link = channel.link;

这个问题没有清楚地描述你对当前方式的关注。您是否担心在对象树中导航的执行时间、解析复杂JSON对象的开销或其他问题?我最担心的是,我目前的做法不是很好的编码实践,因为可能会有大量重复代码,并可能导致一些可读性问题。正在使用[object].[innerObject].[innerObject].[innerObject]。名称似乎太长了。下面的答案看起来是一个很好的处理方法。
public class WeatherInfo
{
    //top level query object
    public jsonquery query { get; set; }
}

public class jsonquery
{
    public jsonresults results { get; set; }
}

public class jsonresults
{
    public jsonchannel channel { get; set; }
}

public class jsonchannel 
{
    public string title { get; set; }
}
Console.WriteLine(wInfo.query.results.channel.title);
var channel = wInfo.query.results.channel;
var title = channel.title;
var link = channel.link;