Tag: json

使用JsonProperty对JSON进行Model属性绑定

我受到我方和客户之间协议的约束,使用包含破折号的json参数。 由于无法在C#中的属性名称中使用它,我需要映射到所需的属性。 我现在应该做什么: 为方便起见,下面的代码被简化。 模型 public class MyRequest { [JsonProperty(“request-number”)] public string RequestNumber { get; set; } [JsonProperty(“name”)] public string Name { get; set; } } 调节器 [HttpGet] [Route(“api/load-stuff”)] public Stuff LoadStuff([FromUri]MyRequest request) { return BackEnd.LoadStuff(request); } 从客户端调用API 使用此uri定位上述控制器: http://localhost:12345/api/load-stuff?request-number=X123&name=requestName 我的问题 如果我在BackEnd.LoadStuff行放置断点,我可以看到调用到达,但请求未正确映射。 名称包含我所期望的: requestName ,但RequestNumber为null ,因此映射不起作用。 出了什么问题?

将c#数组传递给java脚本

我在c#中的page_load中有一个数组,我想在java脚本中访问但不知道如何做到这一点。 float [] energyArray = new float[count]; for (int i = 0; i < count; i++) { energyArray[i] = energyObj[i].FwdHr; } 现在我想用javascript代替数据访问 – series: [{ name: ‘Tokyo’, data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6] }]

反序列化对象将所有值设置为空

我正在尝试将JSON反序列化为自定义对象,但我的所有属性都设置为null并且不确定发生了什么。 有人看错了吗? JSON示例 { “Keys”: [ { “RegistrationKey”: “asdfasdfa”, “ValidationStatus”: “Valid”, “ValidationDescription”: null, “Properties”: [ { “Key”: “Guid”, “Value”: “i0asd23165323sdfs68661358” } ] } ] } 这是我的代码,其中strResponseValid是上面的JSON。 Keys myDeserializedObjValid = (Keys)JsonConvert.DeserializeObject(strResponseValid, typeof(Keys)); validationStatusValid = myDeserializedObjValid.ValidationStatus; 这是我的课程 public class Keys { public string RegistrationKey { get; set; } public string ValidationStatus { get; set; } public string […]

如何将大型JSON对象直接序列化为HttpResponseMessage流?

有没有办法将大型JSON对象直接流式传输到HttpResponseMessage流? 这是我现有的代码: Dictionary hugeObject = new Dictionary(); // fill with 100,000 key/values. Each string is 32 chars. HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); response.Content = new StringContent( content: JsonConvert.SerializeObject(hugeObject), encoding: Encoding.UTF8, mediaType: “application/json”); 适用于较小的物体。 但是,调用JsonConvert.SerializeObject()将对象转换为字符串的过程会导致大对象出现有问题的内存峰值。 我想做相当于这里描述的反序列化 。

如何在Web Api Post请求Json中检测重复键

当请求Json包含重复键时,我需要从ASP.NET Web API Post请求返回400错误。 例如,如果请求是 { “key1”: “value1”, “key2”: 1000, “key2”: 2000, “key3”: “value3” } 然后我想要抛出错误,因为有两个“key2”键。 我的控制器方法看起来像 [HttpPost] public IHttpActionResult PostMethod([FromBody]RequestModel request) { ….. } 和我的RequestModel模型一样 public class RequestModel { [Required] public string Key1 {get; set; } [Required] public int Key2 {get; set; } public string Key3 {get; set; } } 在上面的示例中,Json序列化程序似乎很乐意接受请求并使用2000填充Key2,或者密钥的最后一个实例。 我想我需要做一些涉及JsonSerializerSettings类的事情,或者实现一个自定义的JsonConverter,但我不确定如何继续。

NewtonSoft.Json自定义JsonConverter反序列化为DateTime不起作用

我试图将Unix timestamp反序列化为DateTime 。 在我的情况下,我需要做更多的检查才能从时间戳设置属性到DateTime。 如果我使用Newtonsoft.Json DateTime ,它将它反序列化为UTC时间,我需要将其反序列化为特定的时区 问题是我无法得到正确的时间。 似乎我的字符串long解析失败了。 如果我可以得到long unix时间戳,我可以让其余的逻辑工作 我有一个名为Alert的课程 class Alert { // Some properties [JsonConverter(typeof(UnixTimestampJsonConverter))] public DateTime Created { get; set; } // Some more properties } UnixTimestampJsonConverter类是 class UnixTimestampJsonConverter : JsonConverter { // Other override methods public override object ReadJson (JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if […]

Json.Net基于值选择对象

我有一个看起来像这样的Json对象: { wvw_matches: [ { wvw_match_id: “1-4”, red_world_id: 1011, blue_world_id: 1003, green_world_id: 1002, start_time: “2013-09-14T01:00:00Z”, end_time: “2013-09-21T01:00:00Z” }, { wvw_match_id: “1-2”, red_world_id: 1017, blue_world_id: 1021, green_world_id: 1009, start_time: “2013-09-14T01:00:00Z”, end_time: “2013-09-21T01:00:00Z” } ] } 它包含的数组中的对象比上面显示的示例多得多。 无论如何,我需要根据wvw_match_id选择Json对象。 我怎么做到这一点? 🙂

c#和newtonsoft中的JSON Date和DateTime序列化

我们将JSON发送到由swagger定义的API,其中一些属性是DateTime,格式为yyyy-MM-ddThh:mm:ss.000Z(毫秒必须是3位数或者在端点处validation失败),有些属于Date(否)时间)属性。 我看到许多消息说使用这样的格式化程序: var jsonSettings = new JsonSerializerSettings(); jsonSettings.DateFormatString = “yyyy-MM-ddThh:mm:ss.000Z”; //try .fffZ too var jsonObject= Newtonsoft.Json.JsonConvert.DeserializeObject(json , setting); 但这不会将DateTimes转换为正确的格式,C#如何处理仅Date类型? 它似乎总是序列化为DateTime.MinValue() 这是一个例子: 有人将json作为字符串发送给我,但日期和日期时间以不正确的格式发送给端点。 我希望swagger类和json反序列化可以格式化它们,但事实并非如此。 这是招摇的生成类 public class OurSwaggerObject { [Newtonsoft.Json.JsonProperty(“dateTimeField”, Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.RegularExpression(@”^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d\.\d{3}Z$”)] public DateTime dateTimeField { get; set; } [Newtonsoft.Json.JsonProperty(“dateField”, Required = Newtonsoft.Json.Required.Always)] [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.RegularExpression(@”^\d{4}-\d\d-\d\d$”)] public DateTime dateField { get; set; } } […]

WebMethod自动将类对象作为JSON返回

谁能解释一下ASP.NET如何处理从WebMethods中的类对象到JSON对象的转换? 例如,您有以下WebMethod,它返回一个Person对象: [WebMethod] public static Person GetPerson() { Person p = new Person() { Id = 1, Name = “Test” }; return p; } 在我调用WebMethod的jQuery中,我得到一个包含json对象的响应。 ASP.NET是如何自动执行此操作的? 它是否使用JavaScriptSerializer类? 您还可以看到很多使用JSON转换器将类对象转换为json对象的示例。 为什么是这样? 是因为它使用的JavaScriptSerializer类及其糟糕的性能还是……?

序列化名为“return”的JSON对象

我正在尝试编写针对Mt Gox的Http API的股票代码。 它返回如下所示的JSON: { “result”:”success”, “return”: { “high”: {“value”:”5.70653″,”value_int”:”570653″,”display”:”$5.70653″,”currency”:”USD”}, “low”: {“value”:”5.4145″,”value_int”:”541450″,”display”:”$5.41450″,”currency”:”USD”}, “avg”: {“value”:”5.561119626″,”value_int”:”556112″,”display”:”$5.56112″,”currency”:”USD”}, “vwap”: {“value”:”5.610480461″,”value_int”:”561048″,”display”:”$5.61048″,”currency”:”USD”}, “vol”: {“value”:”55829.58960346″,”value_int”:”5582958960346″,”display”:”55,829.58960346\u00a0BTC”,”currency”:”BTC”}, “last_all”:{“value”:”5.5594″,”value_int”:”555940″,”display”:”$5.55940″,”currency”:”USD”}, “last_local”:{“value”:”5.5594″,”value_int”:”555940″,”display”:”$5.55940″,”currency”:”USD”}, “last_orig”:{“value”:”5.5594″,”value_int”:”555940″,”display”:”$5.55940″,”currency”:”USD”}, “last”:{“value”:”5.5594″,”value_int”:”555940″,”display”:”$5.55940″,”currency”:”USD”}, “buy”:{“value”:”5.53587″,”value_int”:”553587″,”display”:”$5.53587″,”currency”:”USD”}, “sell”:{“value”:”5.56031″,”value_int”:”556031″,”display”:”$5.56031″,”currency”:”USD”} } } 我正在尝试将该信息转换为对象。 我创建了一组看起来像这样的类: [DataContract] class MtGoxResponse { public string result { get; set; } [DataMember(Name=”return”)] public Resp Resp { get; set; } } [DataContract] class Resp { public HLA high […]