在哪里可以找到一个简单但灵活的C#JSON解析器?

在哪里可以找到一个简单但灵活的C#JSON解析器?,c#,json,C#,Json,我需要将一些JSON解析为C#中的对象。我看过Newtonsoft和JavaScriptSerializer,但要么我不知道如何很好地使用它们,要么它们在处理可能发生变化的格式方面做得很差,对于复杂的结构来说很难处理。我想要一些我可以做的事情,比如: JsonObject j = Deserialize(mystring); String[] earthColors = j.maps["earth"].colors; 不关心结构的其余部分。静态类方法 下面是一种将JSON转换为对象的通用方法(

我需要将一些JSON解析为C#中的对象。我看过Newtonsoft和JavaScriptSerializer,但要么我不知道如何很好地使用它们,要么它们在处理可能发生变化的格式方面做得很差,对于复杂的结构来说很难处理。我想要一些我可以做的事情,比如:

JsonObject j = Deserialize(mystring);
String[] earthColors = j.maps["earth"].colors;
不关心结构的其余部分。

静态类方法 下面是一种将JSON转换为对象的通用方法(请确保包括
System.Web.Script.Serialization
):


动态方法 要获得更具动态性的方法,您需要查看以下内容:

JavaScriptSerializer jss = new JavaScriptSerializer();
var JsonObject = jss.Deserialize<dynamic>(mystring);
c类将被动态创建,可以作为

JsonObject.maps["earth"].colors[0] == "purple";
JsonObject.maps["earth"].colors[1] == "chartreuse";
静态类方法 下面是一种将JSON转换为对象的通用方法(请确保包括
System.Web.Script.Serialization
):


动态方法 要获得更具动态性的方法,您需要查看以下内容:

JavaScriptSerializer jss = new JavaScriptSerializer();
var JsonObject = jss.Deserialize<dynamic>(mystring);
c类将被动态创建,可以作为

JsonObject.maps["earth"].colors[0] == "purple";
JsonObject.maps["earth"].colors[1] == "chartreuse";

我认为你应该重新考虑不使用


我认为你应该重新考虑不使用


这种可能改变的“格式”是什么?JSON不完全是flux中的一种格式。您是否尝试使用
dynamic
对象@Kirk Woll,我的意思是可以添加一些新字段,或者有些部分我不关心,所以我不想预先定义整个结构。@balexandre,看起来很有希望!我不能使用dynamic,所以我自己写了。这个可能会改变的“格式”是什么?JSON不完全是flux中的一种格式。您是否尝试使用
dynamic
对象@Kirk Woll,我的意思是可以添加一些新字段,或者有些部分我不关心,所以我不想预先定义整个结构。@balexandre,看起来很有希望!我无法使用dynamic,所以我最终编写了自己的。简单地创建与JSON响应匹配的类是什么意思。我关心的是,如果添加了一些新字段,或者JSON响应中有一些我不关心的部分,该怎么办?我不想让它变得更脆弱。如果JSON响应中添加了一个新字段,您需要修改
JsonObject
类来适应它(因为这不是一种动态方法)。如果JSON响应中有您不关心的字段,那么您不需要在类中包含这些字段。简单地创建与JSON响应匹配的类是什么意思。我关心的是,如果添加了一些新字段,或者JSON响应中有一些我不关心的部分,该怎么办?我不想让它变得更脆弱。如果JSON响应中添加了一个新字段,您需要修改
JsonObject
类来适应它(因为这不是一种动态方法)。如果JSON响应中有您不关心的字段,则不需要在类中包含这些字段。
{ "maps": ["earth": {"colors": ["purple","chartreuse"] }] }
JsonObject.maps["earth"].colors[0] == "purple";
JsonObject.maps["earth"].colors[1] == "chartreuse";
string mystring = 
    @"
    {
        ""maps"": {
            ""earth"": {
                ""colors"": [
                    ""blue"",
                    ""green""
                ]
            },
            ""moon"": {
                ""colors"": [
                    ""black"",
                    ""white""
                ]
            }
        }
    ";

dynamic j = JsonConvert.DeserializeObject(mystring);
foreach (var c in j.maps["earth"].colors)
{
    Console.WriteLine(c);
}