.net - RestSharp for JSON 中的属性映射不起作用

标签 .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.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 中的相同代码片段 - http://dotnetfiddle.net/ffaXUY

最佳答案

好吧,RestSharp 使用 SimpleJson,它没有对 SerializeAs 的任何引用,也没有自己的机制。
我发现了一个拉取请求 - https://github.com/restsharp/RestSharp/pull/331 ,但是因为 SimpleJson 被关闭了。

IJsonSerializerStrategy 的默认实现中- PocoJsonSerializerStrategy有一些初始逻辑可以进行属性名称替换,但目前不起作用。它有这样的方法 - https://github.com/facebook-csharp-sdk/simple-json/blob/master/src/SimpleJson/SimpleJson.cs :

protected virtual string MapClrMemberNameToJsonFieldName(string clrPropertyName)
{
    return clrPropertyName;
}

所以我只是根据本文中的示例将 SimpleJson 替换为 Newtonsoft Json - http://blog.patrickmriley.net/2014/02/restsharp-using-jsonnet-serializer.html

关于.net - RestSharp for JSON 中的属性映射不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22100519/

相关文章:

c# - 如何使用 CaSTLe Windsor 通过 WPF 应用程序实现正确的 Di

java - 同步 2 个复杂对象图状态的最佳方法是什么

json - 我如何仅允许特定时间的 aws IAM 权限

javascript - AngularJS:如何显示嵌套对象?

python - 如何将 GET 请求中的 JSON 文件转换为 pandas 数据帧?

java - 在java中存储配置的最佳实践

python - 如何在 django 序列化器 SlugRelatedField 中获取反向关系

javascript - .Net Select/Select2 knockout javascript - 如果初始值不在下拉列表中,则无法加载初始值

MongoDB 元素名称 _id 无效(更新)

.net - 请求提交后无法执行此操作