使用RestSharp将JSON映射到C#类

时间:2016-02-22 17:47:41

标签: c# json restsharp

所以我知道可能有其他解决方案。但我的雇主打算使用RestSharp软件包来反序列化并使用JSON数据执行POST请求。我知道数据有效,因为我在API沙箱上玩过它。我在调试时遇到错误的请求错误。这是沙箱中的JSON对象:

MvcHtmlString

这是我在C#中的表示:

{
    "stay": {
        "checkIn": "2016-06-08",
        "checkOut": "2016-06-10",
        "shiftDays": "2"
    },
    "occupancies": [
        {
            "rooms": 1,
            "adults": 2,
            "children": 1,
            "paxes": [
                {
                    "type": "AD",
                    "age": 30
                },
                {
                    "type": "AD",
                    "age": 30
                },
                {
                    "type": "CH",
                    "age": 8
                }
            ]
        }
    ],
    "geolocation": {
    "longitude": 2.646633999999949,
    "latitude": 39.57119,
    "radius": 20,
    "unit": "km"
  }
}

我在这里做错了什么?我知道有可能比RestSharp更容易做到这一点,但我被告知这是使用的方法....所以....帮助?

以下是简单MVC应用程序中的总代码:

   var body = new TestRequest
        {

            stay = new Stay
            {
                checkIn = "2016-06-18",
                checkOut = "2016-06-10",
                shiftDays = 2
            },

            occupancies = new Occupancy[]
            {
                new Occupancy
                {
                    rooms = 1,
                    adults = 2, children = 1,
                    paxes = new Pax [] 
                    {
                        new Pax
                        {
                            type = "AD",
                            age = 30
                        },
                        new Pax
                        {
                            type = "AD",
                            age = 30
                        },
                        new Pax
                        {
                            type = "AD",
                            age = 30
                        }
                    }
                }
            },

            geolocation = new Geolocation
            {
                longitude = 2.646633999999949F,
                latitude = 39.57119F,
                radius = 20,
                unit = "km"
            }

        };

1 个答案:

答案 0 :(得分:0)

在此处弹出您的JSON:json2csharp。我已成功使用它多次验证。错误的请求可能有很多原因 - 您是否在浏览器调试或代码中有堆栈跟踪或错误描述?

您是否已在网站上启用并运行了simple sample?它是一个XML示例,但您可以逐步调整它以达到您需要的位置,并帮助勾选项目工作,例如您的api-key和共享密钥是正确的。有时候这些是长串的,你不小心砍掉了一个角色,或者添加了一个剪切和粘贴的空间。

另外,考虑转储RestSharp并使其正常工作,然后将其移植以保持管理层满意:)

仅供参考 - 您的JSON在json2csharp中呈现以下内容:

public class Stay
{
    public string checkIn { get; set; }
    public string checkOut { get; set; }
    public string shiftDays { get; set; }
}

public class Pax
{
    public string type { get; set; }
    public int age { get; set; }
}

public class Occupancy
{
    public int rooms { get; set; }
    public int adults { get; set; }
    public int children { get; set; }
    public List<Pax> paxes { get; set; }
}

public class Geolocation
{
    public double longitude { get; set; }
    public double latitude { get; set; }
    public int radius { get; set; }
    public string unit { get; set; }
}

public class RootObject
{
    public Stay stay { get; set; }
    public List<Occupancy> occupancies { get; set; }
    public Geolocation geolocation { get; set; }
}