为了账号安全,请及时绑定邮箱和手机立即绑定

解析嵌套的 json 在对象中返回 null

解析嵌套的 json 在对象中返回 null

C#
ABOUTYOU 2022-06-19 16:39:56
我有以下json。{    "room1": {        "first": "id1",        "second": "id2",        "third": "id3"    },    "room2": {        "first": "id1",        "second": "id2",        "third": "id3"    }}我正在尝试对这两个类进行反序列化。public class Streams    {        [JsonProperty("first")]        public string first { get; set; }        [JsonProperty("second")]        public string second { get; set; }        [JsonProperty("third")]        public string third { get; set; }    }    public class Room    {            public string room { get; set; }            public Streams streams { get; set; }    }我当前的代码很简单:Rooms r = JsonConvert.DeserializeObject<Rooms>(jsonstring);我知道我的 json 字符串有多个房间,但是如果我添加 List 它会引发异常。上面的这条线通过了,但是我得到了房间和流的空值。我还尝试将 Rooms 类构建为Dictionary<string, Streams> d { get; set; }这没有引发异常,但仍然返回 null。编辑:我把 json 改成这样,现在解析得很好。[{    "room":"room1",    "first": "id1",    "second": "id2",    "third": "id3"},{    "room":"room1",    "first": "id1",    "second": "id2",    "third": "id3"}]
查看完整描述

2 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

你的类对于这个对象是错误的


public class JsonClass

{

    public RoomClass room1 {get; set;}

    public RoomClass room2 {get; set;}

}


public class RoomClass

{

    [JsonProperty("first")]

    public string first { get; set; }


    [JsonProperty("second")]

    public string second { get; set; }


    [JsonProperty("third")]

    public string third { get; set; }

}

然后


var result = JsonConvert.DeserializeObject<JsonClass>(jsonstring);

编辑:OP表示会有很多房间


var result = JsonConvert.DeserializeObject<IDictionary<string, RoomClass>>(jsonstring);



查看完整回答
反对 回复 2022-06-19
?
暮色呼如

TA贡献1853条经验 获得超9个赞

public class Rooms

{

        public Streams room1{ get; set; }

        public Streams room2{ get; set; }

}

Rooms r = JsonConvert.DeserializeObject<Rooms>(jsonstring);


查看完整回答
反对 回复 2022-06-19
  • 2 回答
  • 0 关注
  • 271 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信