Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅使用RestSharp将对象转换为json_C#_Post_Restsharp - Fatal编程技术网

C# 仅使用RestSharp将对象转换为json

C# 仅使用RestSharp将对象转换为json,c#,post,restsharp,C#,Post,Restsharp,我创建了一个像这样的小班 public class Device { public Device() { } [DeserializeAs(Name = "u_friendly_name")] //[SerializeAs(Name = "u_friendly_name")] public string Name { get; set; } } } 为了将“Name”映射到“u_-

我创建了一个像这样的小班

public class Device
    {
        public Device()
        {
        }

        [DeserializeAs(Name = "u_friendly_name")]
        //[SerializeAs(Name = "u_friendly_name")]
        public string Name { get; set; }
    }
}
为了将“Name”映射到“u_-friendly_-Name”(应该是json格式),我添加了一个反序列化声明。我的第一个问题是。。如果我想发布/获取json,我是否需要反序列化和序列化,或者反序列化就足够了

做这样的动作效果很好。它会自动获取json并根据需要将其强制转换到设备。然而,写一篇帖子并不是那么简单

public Device GetDevice(string guid)
{
    var request = new RestRequest("api/now/table/x_device", Method.GET);
    request.RootElement = "result";

    var devices = client.Execute<List<Device>>(request);
    return devices.Data.FirstOrDefault(d => d.Guid == guid);
}
问题是对象没有转换成json。我看到的不是json输出中的“u_-friendly_-name”,而是“name”。我知道这可以通过Json.Net解决,例如:

string json = JsonConvert.SerializeObject(device);
但这也需要我向项目中添加另一个依赖项,并向类中添加JsonProperty声明。我已经能够使用Json.NET获得POST,但无法获得,反之亦然

有谁能告诉我如何仅使用(最好)RestSharp序列化类的正确方向

编辑:在阅读了大量有关stackoverflow的帖子后,我觉得RestSharp不适合反序列化。我发现以下链接使用了自定义json序列化程序,虽然POST工作得很好,但我不确定GET有什么问题:

但我希望这不必要

Edit2:我已经设法通过向RestSharp客户端添加“addHandler”来让文章正常工作,正如上面的博客文章中所提到的。我还更改了我的类并添加了“设备”定义

public class Devices
{
    [JsonProperty(PropertyName = "result")]
    public List<Device> devices { get; set; }
}

public class Device
    {
        public Device()
        {
        }

        [DeserializeAs(Name = "u_friendly_name")]
        //[SerializeAs(Name = "u_friendly_name")]
        public string Name { get; set; }
    }
}
尽管它现在起作用了,我最初的问题仍然存在。如果可能的话,我希望删除Json.Net并只使用RestSharp

public Device GetDevice(string guid)
{
    var request = new RestRequest("api/now/table/x_device", Method.GET);
    request.RequestFormat = DataFormat.Json;
    request.JsonSerializer = NewtonsoftJsonSerializer.Default;
    request.RootElement = "result";

    var devices = client.Execute<List<Device>>(request);
    return devices.Data.FirstOrDefault(d => d.Guid == guid);
}
[JsonProperty(PropertyName = "u_friendly_name")]
[DeserializeAs(Name = "u_friendly_name")]
public class Devices
{
    [JsonProperty(PropertyName = "result")]
    public List<Device> devices { get; set; }
}

public class Device
    {
        public Device()
        {
        }

        [DeserializeAs(Name = "u_friendly_name")]
        //[SerializeAs(Name = "u_friendly_name")]
        public string Name { get; set; }
    }
}
public Device GetDevice(string guid)
{
    var request = new RestRequest("api/now/table/x_uia_sdm_device", Method.GET);
    request.RequestFormat = DataFormat.Json;
    request.JsonSerializer = NewtonsoftJsonSerializer.Default;

    IRestResponse response = client.Execute(request);
    var deviceList = JsonConvert.DeserializeObject<Devices>(response.Content);
    return deviceList.devices.FirstOrDefault(d => d.Guid == guid);
}
{
  "result": [
    {
      "u_guid": "12345678",
      "u_friendly_name": "DeviceA",
      "sys_mod_count": "1",
      "sys_updated_on": "2017-03-09 11:58:50",
      "sys_tags": "",
      "u_config_override": "log_level_local = 5",
      "u_running_version": "1.0.0",
      "sys_id": "abcdefg",
      "sys_created_on": "2017-03-07 12:25:06",
      "u_reference_record": "",
      "u_status": "Provisioned",
      "sys_created_by": "foo@bar.no"
    },
    {
      "u_guid": "34567890",
      "u_friendly_name": "DeviceB",
      "sys_mod_count": "0",
      "sys_updated_on": "2017-03-08 13:23:06",
      "sys_tags": "",
      "u_config_override": "",
      "u_running_version": "",
      "sys_id": "abcdefg",
      "u_application": "",
      "u_reference_record": "",
      "u_status": "",
      "sys_created_by": "foo@bar.no"
    }
  ]
}