- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我阅读最新 RestSharp 的 readme.txt 时:
*** IMPORTANT CHANGE IN RESTSHARP VERSION 103 ***
In 103.0, JSON.NET was removed as a dependency.
If this is still installed in your project and no other libraries depend on
it you may remove it from your installed packages.
There is one breaking change: the default Json*Serializer* is no longer
compatible with Json.NET. To use Json.NET for serialization, copy the code
from https://github.com/restsharp/RestSharp/blob/86b31f9adf049d7fb821de8279154f41a17b36f7/RestSharp/Serializers/JsonSerializer.cs
and register it with your client:
var client = new RestClient();
client.JsonSerializer = new YourCustomSerializer();
The default Json*Deserializer* is mostly compatible, but it does not support
all features which Json.NET has (like the ability to support a custom [JsonConverter]
by decorating a certain property with an attribute). If you need these features, you
must take care of the deserialization yourself to get it working.
我已经使用 nu 包管理器安装了 Newtonsoft.Json,我正在尝试将 Json.NET 注册到客户端变量,但没有成功。这是我的代码:
private void Form1_Load(object sender, EventArgs e)
{
var client = new RestClient("http://homestead.app/vendor");
client.JsonSerializer = new JsonSerializer(); <-- HERE IS THE ERROR
var request = new RestRequest("", Method.GET);
IRestResponse response = client.Execute(request);
var content = response.Content; // raw content as string
textBox1.Text = content;
}
client.JsonSerializer 属性不可用。
请帮助我。谢谢
最佳答案
RestSharp 的序列化程序必须实现两个接口(interface):
您必须包装 Newtonsoft 的序列化程序才能使用这些接口(interface)进行键入。
我参与的一个项目中有工作代码:
/// <summary>
/// Default JSON serializer for request bodies
/// Doesn't currently use the SerializeAs attribute, defers to Newtonsoft's attributes
/// </summary>
/// <remarks>
/// Based on http://blog.patrickmriley.net/2014/02/restsharp-using-jsonnet-serializer.html
/// </remarks>
public class RestSharpJsonNetSerializer : RestSharp.Serializers.ISerializer, RestSharp.Deserializers.IDeserializer
{
private readonly JsonSerializer serializer;
/// <summary>
/// Default serializer
/// </summary>
public RestSharpJsonNetSerializer()
{
this.ContentType = "application/json";
this.serializer = new JsonSerializer
{
MissingMemberHandling = MissingMemberHandling.Ignore,
NullValueHandling = NullValueHandling.Include,
DefaultValueHandling = DefaultValueHandling.Include
};
}
/// <summary>
/// Default serializer with overload for allowing custom Json.NET settings
/// </summary>
public RestSharpJsonNetSerializer(JsonSerializer serializer)
{
this.ContentType = "application/json";
this.serializer = serializer;
}
/// <summary>
/// Unused for JSON Serialization
/// </summary>
public string DateFormat { get; set; }
/// <summary>
/// Unused for JSON Serialization
/// </summary>
public string RootElement { get; set; }
/// <summary>
/// Unused for JSON Serialization
/// </summary>
public string Namespace { get; set; }
/// <summary>
/// Content type for serialized content
/// </summary>
public string ContentType { get; set; }
/// <summary>
/// Serialize the object as JSON
/// </summary>
/// <param name="obj">Object to serialize></param>
/// <returns>JSON as String</returns>
public string Serialize(object obj)
{
using (var stringWriter = new StringWriter())
{
using (var jsonTextWriter = new JsonTextWriter(stringWriter))
{
jsonTextWriter.Formatting = Formatting.Indented;
jsonTextWriter.QuoteChar = '"';
this.serializer.Serialize(jsonTextWriter, obj);
var result = stringWriter.ToString();
return result;
}
}
}
public T Deserialize<T>(RestSharp.IRestResponse response)
{
using (var strReader = new StringReader(response.Content))
{
using (var jsonReader = new JsonTextReader(strReader))
{
var data = this.serializer.Deserialize<T>(jsonReader);
return data;
}
}
}
}
关于c# - 'RestClient' 不包含 'JsonSerializer' 的定义并且没有扩展方法 'JsonSerializer',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43485991/
问题 我有一个 Spring MVC 应用程序,它要求我将某个实体列表的 id 和名称转换为具有特定格式的 JSON 对象数组,并在某个请求上输出。也就是说,我需要一个像这样的 JSON 对象数组:
当我阅读最新 RestSharp 的 readme.txt 时: *** IMPORTANT CHANGE IN RESTSHARP VERSION 103 *** In 103.0, JSON.NE
我有两个类(class)。以二等领域第一。 class A { @JsonSerializer(using = CustomBSerializer.class) private B b; }
有什么方法可以从 JsonSerializer 类中取出设置并在新的 JsonSerializer 中重新实现它们? 似乎没有任何方法可以做那样的事情。我发现最好的是通过反射调用的私有(private
在我的java应用程序中,我分别使用 JsonSerializer 和 JsonSerializer() 来序列化 java.util.Date 和 java.sql.Timestamp 字段。但问题
我想使用 Foundation 的 JSONSerialization.data(withJSONObject obj: AnyObject, options opt:writingOptions =
根据PHP手册 If a Pure Enum is serialized to JSON, an error will be thrown. If a Backed Enum is serialize
我有一个父类,我在其上指定了一个像这样的自定义反序列化器 - @JsonDeserialize(using = CustomDeserializer.class) public class Paren
根据PHP手册 If a Pure Enum is serialized to JSON, an error will be thrown. If a Backed Enum is serialize
我有一个位于 .jar 中的类,但无法修改。 它在类上有一个 @JsonSerialize() 注释。 @JsonSerialize(using = SomeClassSerializer.class
我正在使用 JSON token 开发 iOS,但遇到了 unsupported_grant_type 错误。我正在开发的代码如下 let params = ["grant_type": "passw
我有以下代码将 joda 的 LocalDate 序列化为字符串: public class JodaDateSerializer extends JsonSerializer { priva
我想添加一个包装器,其命名是在运行时确定的,因为它取决于类名(我可以使用@JsonRootName,但我不想这样做,因为我必须在每个子类上使用它,即效率不高)。 我想我应该使用 @JsonSerial
我编写了一个自定义的 JsonSerializer 来将 BigDecimal 转换为 String。我想使用 @JsonSerialize 注释调用此序列化程序,但有条件地,即如果特定 boolea
JSONSerialization 未在服务器发送时序列化数据。它反转数据。我使用后端的数据过滤 API。它发送准确的数据,我还检查了 postman 和 Android 端,但 iOS 代码更改了响
我正在尝试将 SwiftyJSON 与我的 JSON api 数据一起使用,但我无法理解转换的工作原理。 这是 SwiftyJSON Git 的链接:https://github.com/Swifty
我有一个自定义类 public class Balance: NSObject { var details: String var date: Date var amount:
我在解析 json 时遇到错误 "hoursOfOperation" : { "sat" : { "enabled" : true, "schedule"
什么是 option: [] in JSONSerialization in swift let jsonData = try JSONSerialization.data(withJSONObjec
我在将我的模型翻译成字典时遇到了问题。我的模型继承自 Codable,当使用 JSONSerialization 时,我得到了一个字典,其形式为: (...,"sensors": ( { accx =
我是一名优秀的程序员,十分优秀!