Tag: json.net

使用Newtonsoft JSON解释ObjectCreationHandling?

我正在追踪一个错误,我注意到Newtonsoft JSON会将项目附加到已在默认构造函数中初始化的List 。 我做了一些挖掘并与C#chat上的一些人讨论过,我们注意到这种行为并不适用于所有其他集合类型。 https://dotnetfiddle.net/ikNyiT using System; using Newtonsoft.Json; using System.Collections.Generic; using System.Collections.ObjectModel; public class TestClass { public Collection Collection = new Collection(new [] { “ABC”, “DEF” }); public List List = new List(new [] { “ABC”, “DEF” }); public ReadOnlyCollection ReadOnlyCollection = new ReadOnlyCollection(new [] { “ABC”, “DEF” }); } public class Program { […]

从结构化数据构建JSON层次结构

C#| .NET 4.5 | entity framework5 我有一个以ID,ParentID,Nameforms从SQL查询返回的数据。 我想获取该数据并将其解析为Hierarchical JSON字符串。 到目前为止,这似乎是一项艰巨的任务,而不是应有的任务。 因为我正在使用Entity,所以数据作为IEnumerable很好地回馈给我。 现在我相信我只需要某种forms的递归,但我不确定从哪里开始。 任何帮助表示赞赏。 数据返回为 id parentId name 1 1 TopLoc 2 1 Loc1 3 1 Loc2 4 2 Loc1A 代码是 public static string GetJsonLocationHierarchy(long locationID) { using (EntitiesSettings context = new EntitiesSettings()) { // IEnumerable of ID,ParentID,Name context.GetLocationHierarchy(locationID); } } 最终的结果我希望是这样的: { “id”: “1”, “parentId”: […]

NewtonSoft在runTime添加JSONIGNORE

我希望使用NewtonSoft JSON序列化一个列表,我需要在序列化时忽略其中一个属性,我得到以下代码 public class Car { // included in JSON public string Model { get; set; } // ignored [JsonIgnore] public DateTime LastModified { get; set; } } 但我在我的应用程序中的许多地方使用此特定类汽车,我想只在一个地方排除选项。 我可以在我需要的特定位置动态添加[JsonIgnore]吗? 我怎么做 ?

JSON反序列化为构造的受保护的setter数组

我使用Newtonsoft JSON来序列化/反序列化我的对象。 其中一个包含一个带有受保护的setter的数组,因为构造函数构建了数组本身,只有成员被操纵。 这可以没有问题地序列化,但是当反序列化时,它被忽略,因为它不是公共的。 我尝试了一个自定义转换器,它也没有被调用,因为它不公开。 这是一个最小化的例子: public static class TestCoordsDeserialization { private class Coords { public Double X { get; set; } public Double Y { get; set; } public Double Z { get; set; } public Double A { get; set; } } private class Engine { public string Text { get; set; } […]

根据用户确定要在Json.Net中序列化的属性

我正在创建一个ASP MVC Web API。 我现在想要根据正在执行请求的用户确定要对象序列化的属性。 ApiController知道用户。 基于用户,我有一个函数返回一个字符串数组,其中包含用户对模型有权限的属性名称。 如何将用户传递给ContractResolver,以便它只影响当前请求而不会影响其他用户的同步请求?

如何告诉Json.NET忽略第三方对象中的属性?

Json.NET文档说您使用JsonIgnore来序列化类中的某些属性: public class Account { public string FullName { get; set; } public string EmailAddress { get; set; } [JsonIgnore] public string PasswordHash { get; set; } } 在使用JsonConvert.SerializeObject序列化第三方对象时,如何使Json.NET忽略特定属性?

Newtonsoft.Json反序列化Xamarin iOS项目中的对象

我在Xamarin.Forms项目中遇到了一些非常奇怪的行为。 我正在从REST API中检索一些序列化数据。 然后我尝试使用Json.NET将其反序列化为一个对象。 这在Android上完全正常,如果我将代码复制到.NET控制台应用程序,它也可以工作。 但是在我的iOS项目中,对.DeserializeObject()的调用只返回null。 它不会以任何方式抛出错误或抱怨。 我确实找到了这个讨论: https : //forums.xamarin.com/discussion/15152/deserialization-not-working-with-json-net-on-ios-device-ios-simulator-works ,但我没有链接首先是所有程序集并尝试设置TJPurtell.1752建议的属性也没有帮助。 谁能告诉我该怎么办? 非常感谢! 一月 编辑 这是我正在尝试反序列化的示例响应: [ { “Isbn”:{ “Isbn10″:”0099910101”, “Isbn13″:”9780099910107” }, “Title”:”A Farewell to Arms”, “Authors”:[ “Ernest Hemingway” ], “Publisher”:”Random House”, “ReleaseDate”:”1994″, “PageCount”:293, “Description”:”In 1918 Ernest Hemingway went to war, to the ‘war to end all wars’. He volunteered for ambulance service in […]

覆盖自定义JSON.net合约解析程序中的属性值

我正在尝试实现一个自定义的JSON.net IContractResolver,它将用指定的字符串替换所有null属性值。 我知道这个function可以通过序列化类型成员的属性获得; 这是我们正在考虑的替代路线。 到目前为止我的解析器实现如下。 StringValueProvider是一个IValueProvider的简单实现,它不会影响问题,这是我无法弄清楚如何获取property的值,因为我不知道提供member的实例的这个方法所以我不能将它作为参数传递给GetValue() (在代码示例中标记为WHAT-GOES-HERE?)。 有没有办法可以从member或property获得我需要的东西? public class NullSubstitutionPropertyValueResolver : DefaultContractResolver { private readonly string _substitutionValue; public NullSubstitutionPropertyValueResolver(string substitutionValue) { _substitutionValue = substitutionValue; } protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization) { JsonProperty result = base.CreateProperty(member, memberSerialization); PropertyInfo property = member as PropertyInfo; if (property == null) { return result; } // What […]

Json.NET反序列化其他类型中的元组不起作用?

使用Json.net,反序列化包含Tuple的类型不起作用(序列化工作,但反序列化不起作用): [TestMethod] public void Test() { var orig = new TupleHolder(“what????”, true); var json = JsonConvert.SerializeObject(orig); Assert.AreEqual(“{\”Tup\”:{\”Item1\”:\”what????\”,\”Item2\”:true}}”, json); // great! serialization works like a charm! now let’s test deserialization: var dupl = JsonConvert.DeserializeObject(json); Assert.AreEqual(“ZZZ”, dupl.Tup.Item1); // pass! but it should be “what????”… what???? Assert.AreEqual(false, dupl.Tup.Item2); // pass! but it should be “true”, right??? Assert.AreEqual(orig.Tup.Item1, dupl.Tup.Item1); […]

JSON.NET反序列化特定属性

我有以下JSON文本: { “PropOne”: { “Text”: “Data” } “PropTwo”: “Data2” } 我想将PropOne反序列化为PropOne类型,而无需反序列化对象上的任何其他属性。 可以使用JSON.NET完成吗?