加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

在ASP.Net MVC中将JSON转换为C#类

发布时间:2020-12-16 03:23:17 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试编写一个API – 其网站上显示的预期输出(针对第三方)是下面的 JSON: {"api_version" : 4,"hotel_ids" : [97497],"hotels" : [ { "hotel_id": 97497,"room_types": { "Fenway Room": { "url": "someurlhere","price": 178.50,"room_code": "SINGLE
我正在尝试编写一个API – 其网站上显示的预期输出(针对第三方)是下面的 JSON:

{
"api_version" : 4,"hotel_ids" : [97497],"hotels" :
    [
        {
            "hotel_id": 97497,"room_types":
                {
                    "Fenway Room":
                        {
                            "url": "someurlhere","price": 178.50,"room_code": "SINGLE"                               
                        }
                }
        }
    ]
}

我正在使用在线工具:http://json2csharp.com/

它给了我以下课程:

public class FenwayRoom
{
public string url { get; set; }
public double price { get; set; }
public string room_code { get; set; }
}

public class RoomTypes
{
public FenwayRoom __invalid_name__Fenway Room { get; set; }
}

public class Hotel
{
public int hotel_id { get; set; }
public RoomTypes room_types { get; set; }
}

public class RootObject
{
public int api_version { get; set; }
public List<int> hotel_ids { get; set; }
public List<Hotel> hotels { get; set; }
}

您可以在RoomTypes中看到:

FenwayRoom __invalid_name__Fenway Room {get;组; }

我想知道他们的JSON规范是否错误,或者我有没有办法创建类来返回他们期望的JSON?

在这个例子中,我认为房间类型“Fenway Room”是一个变量 – 所以我不认为它也可以是一个类名.但可能只是因为我不知道如何创建这样的类.

我只是无法弄清楚“芬威室” – 我认为它需要有类似的东西:“房间名称”:“芬威室” – 但也许还有另一种定义类的方法,因此它不需要标签“房间名称”.

我非常感谢您确认是否可以创建与JSON相匹配的类.

谢谢,马克

解决方法

使用Json.NET时的输出

"room_types":
{
    "Fenway Room":
    {
        "url": "someurlhere","room_code": "SINGLE"                               
        }
    }
}

看看你将序列化一个词典的确切内容.

把你的班级改为

public class Room
{
    public string url { get; set; }
    public double price { get; set; }
    public string room_code { get; set; }
}

public class Hotel
{
    public int hotel_id { get; set; }
    public Dictionary<string,Room> room_types { get; set; }
}

public class RootObject
{
    public int api_version { get; set; }
    public List<int> hotel_ids { get; set; }
    public List<Hotel> hotels { get; set; }
}

这完全取决于使用Json.NET,它可以免费为您提供此格式的字典序列化/反序列化.您可以使用.NET框架序列化程序执行此操作,但您需要执行额外的工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读