Tag: json

基于.Net(C#)中的字段反序列化json

我正在编写一个应用程序来获取这样的Json对象列表: [ { “ObjectType”: “apple”, “ObjectSize”: 35, “ObjectCost”: 4, “ObjectTaste”: “good”, “ObjectColor”: “golden” }, { “ObjectType”: “books”, “ObjectSize”: 53, “ObjectCost”: 7, “Pages”: 100 }, { “ObjectType”: “melon”, “ObjectSize”: 35, “ObjectTaste”: “good”, “ObjectCost”: 5 }, { “ObjectType”: “apple”, “ObjectSize”: 29, “ObjectCost”: 8, “ObjectTaste”: “almost good”, “ObjectColor”: “red” } ] 我想创建一个基类ItemToSell (大小,成本),并从中派生Apple,Melon和Book,然后根据“ ObjectType ”字段进行反序列化,使其适合任何类。 我希望它构建一个ItemToSell对象列表,每个对象都是Apple,Melon或Book。 我怎么能在.Net中这样做? 提前致谢 […]

如何使用json动态成员获得WCF DataContract

在我正在开发的项目中,我们需要一个可以包含一些未定义的JSON的DataContract。 DataMember是一些仅对客户端有意义的JSON。 我们希望允许客户向我们发送我们不知道的json。 例: public class Contract { [DataMember] public int clientId; [DataMember] public string json; } 显然,有一个像这样定义的契约需要客户端像这样转义json: { “clientId”:1, “json”: “{\”test\”:\”json\”}” } 显然,这不是我们所需要的。 客户端应该发送给我们的json应该如下所示: { “clientId”:1, “json”: {“test”:”json”} } 可能的解决方案: 使用Stream作为请求正文的合约参数。 工作,但将工作放在我们这边,而不是使用框架。 将“json”定义为DynamicObject。 不起作用。 无法正确写入财产。 使用Newtonsoft库,更改WCF端点中的默认协定序列化程序,以序列化JObject的所有输入。 我们还处理请求的序列化,它会导致我们的应用程序出现问题。 我们宁愿避免这种方式。 有没有人可以解决这个问题? 编辑 该服务提供restjson资源。 它使用webHttpBinding定义单个端点。 操作定义如下(为简单起见,将其拆除): [WebInvoke(Method = “POST”, UriTemplate = “…”, ResponseFormat = WebMessageFormat.Json, RequestFormat = […]

ASP.NET Web Api – 使用Chunked Transfer Encoding时,框架不会将JSON转换为对象

我在Android中有一个http客户端将HTTP PUT请求发送到使用C#和ASP.NET WebApi框架实现的REST api。 只要JSON字段与C#类中的属性匹配,框架就应该能够将JSON神奇地转换(反序列化)到模型类(普通对象)中。 当http请求附带Chunked Transfer Encoding使Content-Length = 0(根据http://en.wikipedia.org/wiki/Chunked_transfer_encoding )并且框架无法映射其中的JSON时,问题就出现了。 Http请求消息,因此参数为null。 看这个简单的例子: [HttpPut] public HttpStatusCode SendData(int id, int count, [FromBody]MyData records, HttpRequestMessage requestMessage) { var content = requestMessage.Content; string jsonContent = content.ReadAsStringAsync().Result; //this gets proper JSON return HttpStatusCode.OK; } 问题是当客户端发送嵌入的http请求时,记录为空。 据我所知,Chunked Transfer编码只是一个传输属性,http客户端或服务器不应该担心应用层(传输层的业务)。 但似乎框架并没有像我想的那样管理它。 我可以从HttpRequestMessage手动检索JSON并将其反序列化为MyData对象,但我无法利用ASP.NET框架的魔力。 而且您知道规则: 您添加的代码越多,您可能会引入的错误就越多 。 有没有办法处理带有JSON的Http Put请求,这些请求来自ASP.NET Web Api 2中的分块传输 ? 编辑 […]

从内容类型为application / json的请求中检索值

我有以下脚本将数据发送到MVC中的控制器: $.ajax({ url: ‘/products/create’, type: ‘post’, contentType: ‘application/json; charset=utf-8’, data: JSON.stringify({ ‘name’:’widget’, ‘foo’:’bar’ }) }); 我的控制器看起来像这样: [HttpPost] public ActionResult Create(Product product) { return Json(new {success = true}); } public class Product { public string name { get; set; } } 有没有办法在没有控制器动作的情况下获得“foo”变量 修改模型 修改动作的签名 如果是常规表单提交,我可以访问Request.Form [“foo”],但是这个值为null,因为它是通过application / json提交的。 我希望能够从动作filter访问此值,这就是我不想修改签名/模型的原因。

如何在asp.net中反序列化json

我有关注来自网络的请求的代码 StringBuilder sb = new StringBuilder(); byte[] buf = new byte[8192]; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(“http://api.bigflix.com/BIGFlixApi.do?parameter=getProductType&partnerID=17&uniqueID=54325345435&timestamp=131286916367&digest=bf53cae8f364cfc1d796489d09e4cfd&nbsp&nbsp”); HttpWebResponse responce = (HttpWebResponse)request.GetResponse(); Stream resstream = responce.GetResponseStream(); string tempString = null; int count = 0; do { count = resstream.Read(buf, 0, buf.Length); if (count != 0) { tempString = Encoding.ASCII.GetString(buf, 0, count); sb.Append(tempString); } } while (count > 0); […]

如何使用JSON从WCF REST服务返回Base64编码的字节数组?

我有一个简单的WCF REST方法,它将返回一个字节数组中的图像/文件/ etc: [OperationContract] [WebGet(UriTemplate = “TestMethod”)] byte[] TestMethod(); 服务契约绑定到webHttpBinding具有以下行为: 该方法工作正常,除了字节数组的格式如下: [25,15,23,64,6,5,2,33,12,124,221,42,15,64,142,78,3,23] 如果我删除属性defaultOutgoingResponseFormat=”Json” ,则服务默认为XML格式,结果在Base64中编码,如: GQ8XQAYFAiEMfN0qD0COTgMX 这节省了数据传输,特别是在数据变大时。 如何为JSON输出格式启用Base64编码?

无法加载文件或程序集“Newtonsoft.Json”或其依赖项之一

首先,它不仅仅是重复。 以下问题的答案都不适用于我。 http://goo.gl/tS40cn http://goo.gl/pH6v2T 我刚刚使用Nuget Package Manager更新了所有软件包,我开始收到此错误。 无法加载文件或程序集“Newtonsoft.Json,Version = 6.0.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed”或其中一个依赖项。 定位的程序集的清单定义与程序集引用不匹配。 (HRESULTexception:0x80131040) 我的包裹配置有: Web.config包含这段代码: 来自Reference for Newtonsoft.Json属性 根据类似问题的答案,我尝试过以下几点: 使用Update-Package –reinstall Newtonsoft.Json重新安装软件包 从Web.config为Newtonsoft.Json删除dependentAssembly配置 在dependentAssembly newVersion更改为6.0.0.0和newVersion 。 这样做会产生新的错误。 还尝试了Get-Project -All | Add-BindingRedirect Get-Project -All | Add-BindingRedirect 。 它将Newtonsoft.Json的4.5.0.0更改为4.5.0.0 。 但问题仍未得到解决。 请帮我解决这个问题。

SignalR .NET核心camelCase JSON合同解析器

使用.NET Core RC2。 有SignalR工作,但试图让它返回JSON中的camelCase属性。 对于我正在使用的API … services.AddMvc().AddJsonOptions(o => { o.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); }); 也许SignalR还没有任何东西(毕竟,它甚至不应该工作……),但是想知道是否有人想出来了吗? 我尝试了一些像…… services.AddTransient(); ……但没有去。 有人这个工作了吗?

将XML转换为JSON到XML时保持json:Array属性

我有一块看起来像的XML Alan http://www.google.com Admin 当我尝试将它序列化为json string json = JsonConvert.SerializeXmlNode(xml); 它忽略了名称空间 { “person”: { “@id”: “1”, “name”: “Alan”, “url”: “http://www.google.com”, “role”: [ “Admin” ] } } 当我将它反序列化回xml XmlDocument xml = JsonConvert.DeserializeXmlNode(json) ,我得到以下内容: Alan http://www.google.com Admin 如何保留json:Array属性?

ASP.Net MVC 4 Web API控制器不能与Unity.WebApi一起使用

我的ASP.Net MVC 4 Web API控制器不适用于Unity.WebApi。 在同一个项目中,简单的控制器可以正常使用Unity.Mvc3。 但是,当我运行从ApiController派生的Web API控制器时,我收到一条消息: {“$ id”:“1”,“Message”:“发生错误。”,“ExceptionMessage”:“类型’ElectricTests.Controllers.Api.DocumentsController’没有默认构造函数”,“ExceptionType”:“ System.Web.Http.Internal.TypeActivator.Create [TBase](Type instanceType)\ r \“System.Linq.Expressions.Expression.New(Type type)\ r \ n中的System.ArgumentException”,“StackTrace”:“ n在System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(HttpRequestMessage请求,类型controllerType,Func`1和激活器)\ r \ n在System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage请求,HttpControllerDescriptor controllerDescriptor,类型controllerType) )“} 我的ApiController: public class DocumentsController : ApiController { private readonly IDocumentsRepository _repository; public DocumentsController(IDocumentsRepository repository) { _repository = repository; } public IEnumerable GetFormattedDocuments() { return _repository.GetAllFormattedDocuments(); } … Bootstrapper.cs: public static […]