Tag: json.net

将Json对象属性分配给模型

我使用动态和JObject.Parse匹配从嵌套的JSON-Object到模型类的大约90个属性: dynamic json = JObject.Parse(JsonObjectAsString); return new Foo() { prop1 = json.summer.temperature, prop2 = json.winter.temperature, … prop100 = json.autumn.temperature } 这非常慢,但仅限于第一次运行 。 在第二次运行时,将获取新的JSON-Object(相同的结构但不同的值),并且可以立即将此一个JSON-Object分配给相应的模型属性。 这是为什么? 我该怎么做才能加快第一次跑步? 编辑:我已经将构建类型设置为“发布”。

如何使用Json.net修改一个字段的Json序列化?

比方说,我正在尝试将具有10个字段的对象转换为Json,但是我需要修改序列化其中一个字段的过程。 目前,我必须使用手动写出每个属性,如下所示: public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { writer.WriteStartObject(); writer.WritePropertyName(“Field1”); serializer.Serialize(writer, value.Field1); writer.WritePropertyName(“Field2”); serializer.Serialize(writer, value.Field2); writer.WritePropertyName(“Field3”); serializer.Serialize(writer, value.Field3); writer.WritePropertyName(“Field4”); serializer.Serialize(writer, Convert.ToInt32(value.Field4)); //Modifying one field here //Six more times writer.WriteEndObject(); } 这不是很好的代码,而且必须要编写它真的很烦人。 有没有办法让Json.net自动序列化除一个属性以外的所有属性? 或者可能自动生成一个JObject并修改它?

WebApi将主体绑定到Json字典

我正在尝试使用以下签名创建WebApi操作方法: [System.Web.Http.HttpPost] public object Execute([FromUri] string command, [FromUri] string method, [FromBody] IDictionary arguments) 但是,当我使用请求命中此方法时,参数永远不会正确绑定(两个URI字段可以)。 ModelState在第一个字符处显示Json.NET解析错误。 我尝试过看起来像: id=50和arguments={ “id”: 50 }请求主体。 如何制定我的请求以允许WebApi正确绑定我的参数?

如何在不知道Key值的情况下读取Json数据

我有一个json数据作为输入字符串。 现在我需要用输入的Json数据更新现有的Json数据。 在我的例子中,我希望遍历每个键并与现有的Json数据匹配,然后使用输入的Json数据更新该Key的值 。 用于检索现有数据的代码 var existingJSon = ProductRepository.ListOfProd.Cast().Where(x => x[“ProdId”].ToString() == id.ToString()); 检索数据后,我现有的Json将如下所示。 { ProdId:”1″, Title:”C#”, Author:”Jeffy”, Publisher:”XYZ”, Category:”Microsoft” } 现在我需要遍历作为输入的每个键并匹配现有的Json键并更新该键的值。 输入和更新后它应如下所示: { ProdId:”1″, Title:”C#”, Author:”Jeffy”, Publisher:”abcd”, Category:”Microsfot Basic .Net Development Kit” }

json.net将字符串反序列化为嵌套类

我从http请求中收到一个Json字符串,看起来像这样: { “info”: [ { “calls”:0, “errors”:”[error1, error2, error3]”, “messages”:0, “mail”:3 } ], “received”:5, “valid”:3 } 我正在尝试反序列化的实体的结构大致相同 class ResponseEntity { private Info info; private int received; private int valid; [JsonProperty(“info”)] public Info Info { get { return info; } set { info = value; } } [JsonProperty(“valid”)] public int valid { get { return valid; […]

XSD.EXE + JSON.NET – 如何处理xxxSpecified生成的成员?

当使用XSD.EXE从XML Schema生成类时,它会生成给定对象的任何基元的xxxSpecified成员: ….产生: public class Foo { public int Count { get; set; } public bool CountSpecified { get; set; } } 看来最新版本的JSON.NET可以在反序列化时自动设置这些属性。 string request = “{ Count : 10 }”; var object = JsonConvert.Deserialize(request) Assert.IsTrue(object.Count = 10); // Yup Assert.IsTrue(object.CountSpecified == true); //Also yup – JSON.NET works! 但是,当采用另一种方式时,xxxSpecified属性包含在JSON输出中,这是不正确的,因为它不是模式的一部分。 string request = JsonConvert.Serialize(object); //{ // […]

使用Linq查询和过滤JObject数组

我想这是我系列问题中的另一个条目,但我又被卡住了。 这一次,我在使用JArray的JObjects和确定JArray中每个元素的Property.Value类型时遇到了麻烦…… 我的代码在这里: https : //dotnetfiddle.net/bRcSAQ 我之前的问题和这个问题之间的区别在于我的外部Linq查询同时获得了JObject和JArray标记,这就是为什么我在第40行有一个if (jo is JArray)而第48行有一个if (jo is JArray) 。 一旦我知道我有一个 ,我就有了这样的代码(第48行): if (jo is JArray) { var items = jo.Children(); // return a JObject object } 当我使用调试器并查看项目时,我看到它包含3个JObject对象 – 一个用于Item_3A1,Item_3A2和Item3A3。 但我需要知道每个JProperty.Value的JTokenType,因为我只对JTokenType.String类型的Property值感兴趣。 所以我尝试过: // doesn’t work 🙁 var items = jo.Children() .Where(p => p.Value.Type == JTokenType.String); 编译器使用错误CS0119 ‘JToken.Value(object)’ is a method, which […]

如果Json.NET不兼容,请使其忽略$ type

我有一个IReadOnlyList类型的属性。 为了兼容其他地方,我将其更改为RoadLaneDto[] 。 现在,当我反序列化旧数据时,我收到此错误: Newtonsoft.Json.JsonSerializationException:在JSON中指定的类型’System.Collections.Generic.List`1 [[Asi.Shared.Interfaces.DTOs.Map.RoadLaneDto,Asi.Shared.Interfaces,Version = 1.0.0.0,Culture = neutral, PublicKeyToken = null]],mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089’与’Asi.Shared.Interfaces.DTOs.Map.RoadLaneDto [],Asi.Shared.Interfaces,Version = 1.0不兼容.0.0,Culture = neutral,PublicKeyToken = null’。 Path’Shapes [0] .Lanes。$ type’,第78行,第132位。 使这些兼容的正确方法是什么? 我可以将$type作为建议而不是要求吗? 我可以编写一种可以处理这种情况的自定义转换器吗?

使用C#解析复杂JSON

我是JSON的新手,我有一些JSON,我试图用C#解析。 我试过用类来表示数据,但我的属性的名称是基于时间的,所以我必须硬编码我的数据合同。 我已经尝试过JSON.NET和LINQ来对数据进行排序,但由于奇怪的对象/属性而不断获取空值。 我再次对JSON很陌生,所以我确信有一个简单的解决方法,我只是不确定如何正确地提出问题。 谢谢您的帮助。 下面是我正在努力解析的一小部分JSON示例。 再次感谢。 { “Meta Data”: { “1. Information”: “Intraday (1min) prices and volumes”, “2. Symbol”: “MU”, “3. Last Refreshed”: “2017-05-30 16:00:00”, “4. Interval”: “1min”, “5. Output Size”: “Full size”, “6. Time Zone”: “US/Eastern” }, “Time Series (1min)”: { “2017-05-30 16:00:00”: { “1. open”: “30.7200”, “2. high”: “30.7300”, “3. low”: “30.7000”, […]

当我从Json.net反序列化对象时,设置访问器未被调用

public class SpecialObject { public string ID; [JsonIgnore] public List SpecialObjectCollection = new List(); [JsonIgnore] public List tempObjectIDs = new List(); [JsonProperty] public List SpecialObjectIDs { get { return SpecialObjectCollection.Select(x => x.ID).ToList(); } set { tempObjectIDs = value; } } public SpecialObject() { } public SpecialObject(string _id) { ID = _id; } } static void […]