gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 15:22:50 25 4
gpt4 key购买 nike

我有这样的代码:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com