Tag: json.net

Newtonsoft JSON动态属性名称

有没有办法在序列化期间更改Data属性的名称,所以我可以在WEB Api中重用这个类。 例如,如果我返回分页用户列表,则应将数据属性序列化为“用户”,如果我返回项目列表,则应将其称为“项目”等。 这样的事情是可能的: public class PagedData { [JsonProperty(PropertyName = “Set from constructor”)]?? public IEnumerable Data { get; private set; } public int Count { get; private set; } public int CurrentPage { get; private set; } public int Offset { get; private set; } public int RowsPerPage { get; private set; } public int? […]

如何在Json.NET中将巨大的JSON文件解析为流?

我有一个非常非常大的JSON文件(1000+ MB)相同的JSON对象。 例如: [ { “id”: 1, “value”: “hello”, “another_value”: “world”, “value_obj”: { “name”: “obj1” }, “value_list”: [ 1, 2, 3 ] }, { “id”: 2, “value”: “foo”, “another_value”: “bar”, “value_obj”: { “name”: “obj2” }, “value_list”: [ 4, 5, 6 ] }, { “id”: 3, “value”: “a”, “another_value”: “b”, “value_obj”: { “name”: “obj3” }, “value_list”: […]

Newtonsoft Json.Net序列化JObject不会忽略空值,即使使用正确的设置也是如此

我正在尝试使用Newtonsoft Json.Net序列化对象。 这个对象是一个匿名类型,填充了很多异类的东西,主要是普通的POCO,还有一些JObject或JArray 。 问题是,当将NullValueHandling属性添加到NullValueHandling.Ignore ,每个null属性都会被忽略,但NullValueHandling.Ignore是它只是“常规”.Net对象的一部分。 JObject或JArray每个null属性JArray保留。 这是一个最小的例子: var jobj = JObject.FromObject(new Anything{ x = 1, y = “bla”, z = null }); var poco = new Foo { foo1 = “bar”, foo2 = null }; var serialized = JsonConvert.SerializeObject(new { source1 = poco, source2 = jobj }, Newtonsoft.Json.Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore}); […]

如何将参数传递给非默认构造函数?

我有大约以下图片: public class Foo { public Foo(Bar bar, String x, String y) { this.Bar = bar; this.X = x; this.Y = y; } [JsonIgnore] public Bar Bar { get; private set; } public String X { get; private set; } public String Y { get; private set; } } public class Bar { public Bar(String […]

使用JSON.Net解析ISO持续时间

我有一个Web API项目,其中包含Global.asax.cs的以下设置: var serializerSettings = new JsonSerializerSettings { DateFormatHandling = DateFormatHandling.IsoDateFormat, DateTimeZoneHandling = DateTimeZoneHandling.Utc }; serializerSettings.Converters.Add(new IsoDateTimeConverter()); var jsonFormatter = new JsonMediaTypeFormatter { SerializerSettings = serializerSettings }; jsonFormatter.MediaTypeMappings.Add(GlobalConfiguration.Configuration.Formatters[0].MediaTypeMappings[0]); GlobalConfiguration.Configuration.Formatters[0] = jsonFormatter; WebApiConfig.Register(GlobalConfiguration.Configuration); 尽管如此,Json.Net无法解析ISO持续时间 。 它抛出此错误: 将值“2007-03-01T13:00:00Z / 2008-05-11T15:30:00Z”转换为“System.TimeSpan”时出错。 我正在使用Json.Net v4.5。 我尝试了不同的值,例如“P1M”和维基页面上列出的其他值,没有运气。 所以问题是: 我错过了什么吗? 或者我是否必须编写一些自定义格式化程序?

Newtonsoft.json汇编包版本不匹配

我正在尝试使用SocketIO4Net在.net中创建socket.io客户端。 看来SocketIO4Net依赖于Newtonsoft.Json> = 4.0.8。 我也在使用PushSharp库,其Newtonsoft.Json依赖关系> = 4.5.10。 当我第一次安装PushSharp时,我得到了NewtonSoft.Json 4.5.11,我认为这个版本应该支持SocketIO4Net,因为它的版本更高,但每当我尝试连接到socket.io服务器时都会收到此错误。 无法加载文件或程序集’Newtonsoft.Json,Version = 4.0.8.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed’或其中一个依赖项。 定位的程序集的清单定义与程序集引用不匹配。 (HRESULTexception:0x80131040) 我一直在为这些依赖性问题敲打我的脑袋,如果有人能指出我正确的方向,我将非常感激。

无法反序列化当前的JSON数组(例如)

我正在尝试阅读我的JSON结果。 这是我的RootObject public class RootObject { public int id { get; set; } public bool is_default { get; set; } public string name { get; set; } public int quantity { get; set; } public string stock { get; set; } public string unit_cost { get; set; } } 这是我的JSON结果 [{“id”: 3636, “is_default”: true, “name”: […]

使用json.net在序列化期间合并两个对象?

我遇到了以下情况可以帮助我实现以下目标吗? 例如,如果我有这个类: – public class Sample { public String name {get;set;} public MyClass myclass {get;set;} } 我的Myclass将如下: public class MyClass { public String p1 {get;set;} public String p2 {get;set;} } 当我使用Json.net来序列化Sample类的对象时,我得到如下,它运行良好。 { “name”:”…”, “myclass”: { “p1″:”…”, “p2″:”…” } } 它是正确的,但我想知道是否有可能得到如下的json字符串? { “name”:”…”, “p1″:”…”, “p2″:”…” }

动态JContainer(JSON.NET)并在运行时迭代属性

我在MVC4 / .NET4 WebApi控制器操作中收到一个JSON字符串。 动作的参数是dynamic因为我在接收端对接收到的JSON对象一无所知。 public dynamic Post(dynamic myobject) 自动解析JSON,生成的dynamic对象是Newtonsoft.Json.Linq.JContainer 。 我可以按照预期在运行时评估属性,因此如果JSON包含类似myobject.myproperty的内容,那么我现在可以获取接收的动态对象并在C#代码中调用myobject.myproperty 。 到现在为止还挺好。 现在我想迭代作为JSON的一部分提供的所有属性,包括嵌套属性。 但是,如果我执行myobject.GetType().GetProperties()它只返回Newtonsoft.Json.Linq.JContainer的属性而不是我正在寻找的属性(它们是JSON的一部分)。 知道怎么做吗?

将JSON.NET JObject的属性/标记转换为字典键

我正在使用JSON.NET使用.NET解析来自openexhangerates.org服务器端的JSON响应。 响应包含一个嵌套对象(“rates”),它有一长串数字属性: { “disclaimer”: “Exchange rates provided for informational purposes only, with no guarantee whatsoever of accuracy, validity, availability, or fitness for any purpose; use at your own risk. Other than that, have fun! Usage subject to acceptance of terms: http://openexchangerates.org/terms/”, “license”: “Data sourced from various providers with public-facing APIs; copyright may apply; not for […]