将 JSON 字符串反序列化为 C# 复杂 class 对象

Deserialize JSON string into a C# complex class object

如果 class 由简单的 JSON 兼容类型组成,MyClass obj = JsonConvert.DeserializeObject<MyClass>(JSONtext); 做得很好。如果 MyClass 包含 enumstruct 属性,则 DeserializeObject<> 方法 returns 为空。我目前正在遍历反序列化为 JObject 的 JSON 响应,将值分配给创建的内部 class,然后返回它。有没有更好的方法将 JSON 字符串反序列化为异构 class 对象?

class MyClass
{
    public Int32 wishlistID;
    public Basket currentBasket; //struct
    public List<Int32> items;
    public dStatus _dStatus; //enum
}

编辑:结果是,出于某种原因,所有Basket的属性都有private修饰符;当然无法访问它们,因此结果为 null。将其切换为 public 就可以了。

您的成员必须 public 才能正常工作。

这个工作:

public class MyClass
{
    Int32 a;
    string b; //struct
}

string json = "{ a: 7, b:'abc' }";
MyClass cc = JsonConvert.DeserializeObject<MyClass>(json);

这个确实有效:

public class MyClass
{
    public Int32 a;
    public string b; //struct
}

string json = "{ a: 7, b:'abc' }";
MyClass cc = JsonConvert.DeserializeObject<MyClass>(json);

编辑:

所以在我们完成了 public 之后你声称 structs\enums 通过。
这是他们的例子:

public class MyClass
{
    public Int32 a;
    public test b;
    public eMyEnum c;
}

public struct test
{
    public string str;
}

public enum eMyEnum
{
    A = 0,
    B
}

string json = "{ a: 7, b: {str:'str'}, c: 'B' }";
MyClass cc = JsonConvert.DeserializeObject<MyClass>(json);