.net RestSharp for JSON中的属性映射不';行不通

.net RestSharp for JSON中的属性映射不';行不通,.net,json,serialization,restsharp,.net,Json,Serialization,Restsharp,我有这样的代码: using System; using RestSharp.Serializers; public class Program { public static void Main() { var obj = new Order(); obj.Test = 42; var serializer = new JsonSerializer(); var json = serializer.Seriali

我有这样的代码:

using System;
using RestSharp.Serializers;

public class Program
{
    public static void Main()
    {
        var obj = new Order();
        obj.Test = 42;
        var serializer = new JsonSerializer();
        var json = serializer.Serialize(obj);
        Console.WriteLine(json);    
    }
}

public class Order
{
    [SerializeAs(Name = "object")]
    public string Object
    {
        get { return "Order"; }
    }

    [SerializeAs(Name = "TestName")]
    public int Test
    {
        get;set;
    }           
}
基于SerializeAs属性,RestSharp应该使用属性中的名称,而不是属性名称。但它只是忽略了这一点。此代码的输出为:

{
  "Object": "Order",
  "Test": 42
}
我是错过了什么还是RestSharp无法使用


DotNetFiddle中的相同代码片段-

好吧,RestSharp使用SimpleJson,它没有任何对SerializeAs的引用,也没有自己的机制。 我发现了一个拉请求-,但因为SimpleJson而关闭了它

IJsonSerializerStrategy
-
PocoJsonSerializerStrategy
的默认实现中,有一些初始逻辑可以进行属性名替换,但目前还不起作用。它有这样的方法-:

因此,我根据本文中的示例将SimpleJson替换为Newtonsoft Json-

,根据:

RestSharp决定在v107.0中恢复对Newtonsoft.JSON的支持

因此,如果您使用的是RestSharp 107+,那么可以安全地使用
JsonPropertyAttribute
属性来指定属性映射。这在使用另一种命名约定(如snake case)处理API时特别有用


这甚至可以编译吗<代码>对象是一个保留关键字。我们可以使用类名作为属性名。没关系。但是如果我使用
对象
,那么它将不会编译,但它不适用于反序列化。如何在响应数据中获得这种行为?RestSharp使用Newtonsoft Json.Net已有一段时间了。看,嗯,是的。那很有趣。我会接受这个答案,因为这是最新的信息。谢谢
protected virtual string MapClrMemberNameToJsonFieldName(string clrPropertyName)
{
    return clrPropertyName;
}