Tag: json.net

如何序列化从Dictionary派生的类

我试图使用Json.Net将以下类与Json序列化/反序列化: public class ChildDictionary:Dictionary { public string Name { get; set; } } 我在这里 , 这里和这里找到了相关的信息,但没有一个具体涉及我们从Dictionary派生的这种情况的语法应该是什么样的。 员工自己与Json.Net成功序列化。 它看起来像这样: [JsonObject(MemberSerialization.OptIn)] public class Employee { [JsonProperty] public string Name { get; set; } [JsonProperty] public double Factor { get; set; } [JsonProperty] public List LoadBuilders = new List(); [JsonConstructor] public LoadCause(string name, double factor, List loadBuilders) { […]

JSON.NET如何删除节点

我有一个类似以下的json: { “d”: { “results”: [ { “__metadata”: { }, “prop1”: “value1”, “prop2”: “value2”, “__some”: “value” }, { “__metadata”: { }, “prop3”: “value1”, “prop4”: “value2”, “__some”: “value” }, ] } } 我只想将这个JSON转换为不同的JSON。 我想从JSON中删除“_ metadata”和“ _some”节点。 我正在使用JSON.NET。

无法反序列化包含$ ref键的JSON

我有以下代码尝试反序列化JSON字符串,该库给我这个错误: 在JSON参考对象中找到的其他内容。 JSON引用对象应该只有$ ref属性。 路径’user.obj’,第1行,第34位。 知道什么是错的吗? (我知道它抱怨第二个$ ref,但我不知道为什么。)解决方法是什么? void Main() { var s = “{\”user\”: {\”$ref\”: \”123456\”, \”obj\”: {\”$ref\”: \”123456\”}}}”; JsonConvert.DeserializeObject(s).Dump(); } // Define other methods and classes here public class Root { [JsonProperty(“user”)] public User User { get; set; } } public class User { [JsonPropertyAttribute(“$ref”)] public string Ref { get; set; } [JsonPropertyAttribute(“obj”)] […]

从WCF服务返回的JSON数据包含转义字符

我有一个工作的WCF – WPF应用程序工作,但我正在寻找一些优化。 下面是我的代码,其中WCF restful服务公开JSON数组,并且WPF UI正在接收它而没有任何问题。 WCF: public clsStatus[] GetAllStatus() { DataTable dt = new DataTable(); List lstGetAllStatus = new List(); try { dt = // My Data Table foreach (DataRow dr in dt.Rows) { dcStatus objGetAllStatus = new clsStatus(); objGetAllStatus.Id = Convert.ToInt32(dr[“Id”]); objGetAllStatus.Status = dr[“Status”].ToString(); lstGetAllStatus.Add(objGetAllStatus); } } return lstGetAllStatus.ToArray(); } 在WPF UI中: public […]

使用非默认构造函数会破坏Json.net中反序列化的顺序

使用Json.net使用父子关系反序列化对象图时,非默认构造函数的使用会破坏反序列化的顺序,以便子对象在其父对象之前被反序列化(构造和属性分配),从而导致空引用。 从实验看来,所有非默认构造函数对象似乎只在所有默认构造函数对象之后实例化,奇怪的是它看起来与序列化的顺序相反(父项之前的子项)。 这会导致应该引用其父项(并且已正确序列化)的“子”对象反而使用空值反序列化。 这似乎是一种非常常见的情况,所以我想知道我是否错过了什么? 是否有更改此行为的设置? 在某种程度上它是否适用于其他场景? 除了全面创建默认构造函数之外,还有解决方法吗? LINQPad或DotNetFiddle的一个简单示例: void Main() { var root = new Root(); var middle = new Middle(1); var child = new Child(); root.Middle = middle; middle.Root = root; middle.Child = child; child.Middle = middle; var json = JsonConvert.SerializeObject(root, new JsonSerializerSettings { Formatting = Newtonsoft.Json.Formatting.Indented, ReferenceLoopHandling = ReferenceLoopHandling.Ignore, PreserveReferencesHandling = PreserveReferencesHandling.All, TypeNameHandling […]

Newtonsoft.Json JsonConvert To Datatable

我有这样的代码, DataTable dt = new DataTable(); string data = “{\”ProductId\”:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77],\”ProductName\”:[\”Chai\”,\”Chang\”,\”Aniseed Syrup\”,\”Chef Anton’s Cajun Seasoning\”,\”Chef Anton’s Gumbo Mix\”,\”Grandma’s Boysenberry Spread\”,\”Uncle Bob’s Organic Dried Pears\”,\”Northwoods Cranberry Sauce\”,\”Mishi Kobe Niku\”,\”Ikura\”,\”Queso Cabrales\”,\”Queso Manchego La Pastora\”,\”Konbu\”,\”Tofu\”,\”Genen Shouyu\”,\”Pavlova\”,\”Alice Mutton\”,\”Carnarvon Tigers\”,\”Teatime Chocolate Biscuits\”,\”Sir Rodney’s Marmalade\”,\”Sir Rodney’s Scones\”,\”Gustaf’s Knäckebröd\”,\”Tunnbröd\”,\”Guaraná Fantástica\”,\”NuNuCa Nuß-Nougat-Creme\”,\”Gumbär Gummibärchen\”,\”Schoggi Schokolade\”,\”Rössle Sauerkraut\”,\”Thüringer Rostbratwurst\”,\”Nord-Ost Matjeshering\”,\”Gorgonzola Telino\”,\”Mascarpone Fabioli\”,\”Geitost\”,\”Sasquatch Ale\”,\”Steeleye Stout\”,\”Inlagd Sill\”,\”Gravad lax\”,\”Côte de […]

如何在C#中解析json对象?

阵: { “field’:[“field1″:”value1″,”field2″:”value2”], [“field1″:”value1″,”field2″:”value2”] } 如何在c#中解析上面的json响应

将字符串数组转换为JArray

我有一个字符串数组 var ids = new string[] { “1408576188”, “1750854738”, “100001058197465” }; 我想将这个字符串数组作为json数组传递给API。 目前,API 无法接受从以下位置返回的字符串: JsonConvert.SerializeObject(ids); 所以我通过将我的ids数组转换为JArray对象来确定我能够使用API​​。 JArray.Parse(JsonConvert.SerializeObject(ids)); 正如你所看到的,我在这里做了两个操作,首先我序列化了ids数组,然后我将结果解析为JArray 。 有没有办法将我的ids数组直接转换为JArray对象?

带有List 的JSON.NET的System.OutOfMemoryException

我正在进行一个过程,我的服务器使用JSON.Net生成一个文件,其中有25000条记录,大小为85MB,然后该文件由客户端导入。 客户端下载文件并使用JSON.Net进行反序列化。 我的问题是时间和不同的机器,反序列化命令给出: System.OutOfMemoryException 注意:我试图手动使用GC不起作用。 代码生成错误: var listAddress = JsonConvert.DeserializeObject<List>(File.ReadAllText(@”c:\Temp\test.json”); 代码生成JSON文件: using (StreamWriter file = File.CreateText(“C:\\test.json”)) { JsonSerializer serializer = new JsonSerializer(); serializer.Serialize(file, listAddress); } 我的class级地址 public class Endereco { public int Codigo { get; set; } public string CGCCPF { get; set; } public char? TipoPessoa { get; set; } public string UF { […]

如何使用JSON.Net转换新的日期(年,月,日)重载

我正在尝试解析日期定义为JavaScript对象的 JSON文件: new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]); 所以我尝试用JavaScriptDateTimeConverter解析它 test.json: {“data” : [{“Date” : new Date(2015, 06, 01, 00, 00, 00)}]} C#: using (StreamReader file = File.OpenText(@”c:\test.json”)) { JsonSerializer serializer = new JsonSerializer(); serializer.Converters.Add(new JavaScriptDateTimeConverter()); Rootobject deserializedRoot = (Rootobject)serializer.Deserialize(file, typeof(Rootobject)); } 不幸的是我收到了这个错误: 意外的令牌解析日期。 期待的EndConstructor,得到了Integer。 路径’数据[0]。日期1 ‘,第13行,第30位。 根据我的理解,JSON.Net充其量只需要一个new Date(52231943)但不处理Javascript Date()对象的构造函数重载。 是否有任何已知的方法来转换new Date(year, month, day) […]