JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了JSON序列化输出具有C#转义格式大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试从客户端将更新的对象POST到REST服务器API.我正在使用RestSharp,我正在将我的对象的 JSON表示添加到我的请求正文中.但是,我的序列化对象的字符串表示格式错误.服务器拒绝它.

我的请求看起来像这样(我用Fiddler来获取它)

PUT https://myapp.net/api/PriceListItems/151276 http/1.1
Accept: application/json,application/xml,text/json,text/x-json,text/javascript,text/xml
User-Agent: RestSharp/104.4.0.0
Content-Type: application/json
Host: myapp.net
Content-Length: 75
Accept-Encoding: gzip,deflate

"{\"Id\":151276,\"AgendaId\":0,\"CurrencyId\":1,\"Code\":\"\",\"Price\":7.0}"

我曾尝试使用Json.NET,RestSharp的内部Json序列化程序以及System.Web.Script.serialization中的JavaScriptserializer来序列化我的对象.全部以这种格式返回一个字符串.我知道这种格式化的原因是因为C#转义双引号所以它可以在里面正确显示它,但我不明白我应该如何将它传递给我的请求没有这种转义格式.我知道服务器接受正确形成的JSON这一事实.

我尝试序列化的对象看起来像这样

public class PriceListItem
    {
        public static PriceListItem CreatePriceListItem(int id,int agendaId,int currencyId,String code,String unit,decimal pricE)
        {
            var priceListItem = new PriceListItem
            {
                Id = id,AgendaId = agendaId,CurrencyId = currencyId,Code = code,Price = price
            };
            return priceListItem;
        }

        public int id { get; set; }

        public int agendaId { get; set; }

        public int CurrencyId { get; set; }

        public String Code { get; set; }

        public decimal Price { get; set; }

编辑:
将我的解决方案从此处移至答案.

解决方法

我刚读了关于这个问题的另一个话题 here.问题是我将对象序列化了两次.

代替

request.AddBody(JsonConvert.serializeObject(priceListItem));

我应该用过

request.AddBody(priceListItem);

无论如何,也许它会帮助别人.但我觉得很奇怪,对象是自动序列化的.

大佬总结

以上是大佬教程为你收集整理的JSON序列化输出具有C#转义格式全部内容,希望文章能够帮你解决JSON序列化输出具有C#转义格式所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。