Tag: json.net

为什么Newtonsoft.Json容易出现汇编版本冲突?

我注意到我们经常在项目中遇到程序集版本冲突,90%的时候它是Newtonsoft.Json的底部。 有关于Newtonsoft.Json冲突的SO有很多问题 – 臭名昭着的“无法加载文件或程序集’Newtonsoft.Json,Version = 6.0.0.0”。 搜索“汇编’Newtonsoft.Json,Version = 6.0.0.0”会提出37个问题 – 其中很多都是高度赞成的。 或者这个约为4.5.0.0 。 是否有任何解释为什么这种情况经常发生在该库而不是其他库中,为什么它是如此一致的汇编版本冲突源? 它肯定比其他库更频繁地发生。

如何让反序列化在期望int的非整数上抛出exception?

我试图将json(例如id: 4.5 )中的十进制值解析为poco int ,我想要一个exception。 背景: 当遇到期望int的小数时,此反序列化会抛出Newtonsoft.Json.JsonSerializationException : httpContent.ReadAsAsync<MyCollection>( mediaTypeFormatters, cancellationToken); MyCollection是一个类,其类型为T Result列表, T可以为int 。 现在,我想抓住那些扔掉并保留其余部分的人。 所以我首先将它作为JObject的集合提取,然后在try-catch中逐个解析它们。 var jObjectsMyCollection = await httpContent.ReadAsAsync<MyCollection>( mediaTypeFormatters, cancellationToken); foreach (var j in jObjectsMyCollection.Results) { try { // now let’s parse j one by one 问题是 我不能这样做,即使使用相同的格式化程序: 这只是反序列化4.5到4并且不抛出: var jsonSerializer = JsonSerializer.Create(myMediaTypeFormatters.JsonFormatter.SerializerSettings); j.ToObject(jsonSerializer) 与此相同: var ser = myMediaTypeFormatters.JsonFormatter.CreateJsonSerializer(); tObjects.Add(ser.Deserialize(j.CreateReader())); 为了记录,在不同的两个不同的格式化程序设置如下: […]

使用NewtonSoft将JSON对象反序列化为.Net对象

我有一个json对象,我想反序列化到它的.Net类型而不用它。 我想我在doc中的某处读到你可以将一个属性传递给json,告诉反序列化器它可以尝试强制转换的.Net对象类型。 我找不到我读到的地方。 我想避免使用 var myNewObject = JsonConvert.DeserializeObject(json); 得到这样的东西 MyClass myNewObject = JsonConvert.DeserializeObject(json); 我从HttpRequest获取了我的json对象,并希望从这个嵌套对象中实例化相应的类。 目前对已知项目的反序列化工作良好,但需要更灵活的东西,而无需从解析方法管理所有已知的Object。

为什么我不能在南希注册自定义JSON.Net实现?

我安装了以下内容: 并且: public sealed class Startup { public void Configuration(IAppBuilder app) { var options = new NancyOptions(); app.UseNancy(options); } } public sealed class CustomJsonNetSerializer : JsonSerializer { public CustomJsonNetSerializer() { ContractResolver = new CamelCasePropertyNamesContractResolver(); DateFormatHandling = DateFormatHandling.IsoDateFormat; Formatting = Formatting.Indented; } } 然后在我的Bootstrapper : protected override void ConfigureApplicationContainer(TinyIoCContainer container) { base.ConfigureApplicationContainer(container); container.Register(); } 最后在路线上: public […]

创建一个新的AnonymousType实例

我正在尝试创建一个AnonymousType实例,如下所示: new { Channel = g.Key.Channel, Comment = g.Key.Comment, Count = g.Count() } 在黑暗中,.NET创建一个带有构造函数的AnonymousType,它带有三个参数: String, String, Int32 。 为了创建这个匿名类型的新实例,我做: object[] args = new object[3]; args[0] = “arg1”; args[1] = “arg2”; args[2] = 200; (T)Activator.CreateInstance(typeof(T), args); .NET转发我: 附加信息:在 f__AnonymousType2`3 [[System.String,…],[System.String,…],[System.Int32,…]]’中找不到构造函数。 我不知道为什么CreateInstance试图调用像[[],[],[]]这样的构造函数! 范围 真正的范围有点难以解释: 我创建了一个Linq提供程序。 此提供程序将Linq语句翻译为我的服务器方法。 当我收到json信息时,我需要将此信息投影到用户指定的类型。 在这种情况下: var enumerable = UIContainer.UIController.Instance.getDigitalInputs() .GroupBy(di => new { Channel […]

在utf-8 json上逃脱重音字符

下面的代码生成此输出: {“x”: “Art. 120 – Incapacità di intendere o di volere”} 我需要改变这个,我想我要改变编码的东西,但我不知道: {“x”: “Art. 120 – Incapacit\u00e0 di intendere o di volere”} 码: string label = “Art. 120 – Incapacità di intendere o di volere”; JObject j = new JObject(); j.Add(new JProperty(“x”, label)); string s = j.ToString(); Encoding encoding = new UTF8Encoding(false); string filename = […]

Json.Net反序列化构造函数与属性规则

我正在使用Json.Net解决以下类的(反)序列化问题: public class CoinsWithdrawn { public DateTimeOffset WithdrawlDate { get; private set; } public Dictionary NumberOfCoinsByType { get; private set; } public CoinsWithdrawn(DateTimeOffset withdrawDate, Dictionary numberOfCoinsByType) { WithdrawlDate = withdrawDate; NumberOfCoinsByType = numberOfCoinsByType; } } 问题是构造函数参数“withdrawDate”的名称与属性名称“WithDrawlDate”不同。 使名称匹配(甚至忽略大小写)修复了问题。 但是,我想要更好地理解这一点,所以我恢复了代码并在将两个setter公之后进行了测试。 这也解决了这个问题。 最后,我从自动属性切换到具有支持字段的属性,以便我可以完全调试并查看实际发生的情况: public class CoinsWithdrawn { private DateTimeOffset _withdrawlDate; private Dictionary _numberOfCoinsByType; public DateTimeOffset WithdrawlDate { get […]

JSON.NET \如何在JSon.net中连接两个JSON

我有两个JSON(作为简单的字符串) – 是否有简洁的方法来连接它们? 作为基础设施的一部分??

在括号内加载包含JSON的JSON文件

我正在尝试使用C#和JSON.Net在网站上加载JSON文件 但是,我在运行时遇到问题,因为所有JSON都在[]内。 这是JSON: [{“embed_count”:”16″,”name”:”live_user_catreina”,”stream_count”:”133″,”category”:”gaming”,”format”:”live”,”channel_count”:272,”title”:”SWTOR – Sith Marauder – L42 – Belsavis – The Fatman”,”featured”:true,”site_count”:”117″,”abuse_reported”:false,”channel”:{“image_url_large”:”http://sofzh.miximages.com/c%23/404_preview-300×300.png”,”channel_url”:”http://www.justin.tv/catreina”,”category_title”:”Gaming”,”screen_cap_url_large”:”http://sofzh.miximages.com/c%23/404_preview-320×240.png”,”mature”:null,”subcategory”:null,”category”:”gaming”,”image_url_medium”:”http://sofzh.miximages.com/c%23/404_preview-150×150.png”,”subcategory_title”:null,”status”:”SWTOR – Sith Marauder – L42 – Belsavis – The Fatman”,”screen_cap_url_medium”:”http://sofzh.miximages.com/c%23/404_preview-150×113.png”,”image_url_small”:”http://sofzh.miximages.com/c%23/404_preview-70×70.png”,”timezone”:”US/Eastern”,”screen_cap_url_small”:”http://sofzh.miximages.com/c%23/404_preview-70×53.png”,”id”:5895485,”views_count”:”6142420″,”embed_enabled”:true,”embed_code”:” \n”,”producer”:true,”image_url_tiny”:”http://sofzh.miximages.com/c%23/404_preview-50×50.png”,”image_url_huge”:”http://sofzh.miximages.com/c%23/404_preview-600×600.png”,”language”:”en”,”tags”:”games gaming lord lotro mmo mmorpg of online pc rings rpg sc2 scii starcraft starcraft2 the vindictus warcraft wow”,”login”:”catreina”,”screen_cap_url_huge”:”http://sofzh.miximages.com/c%23/404_preview-630×473.png”,”title”:”Gaming With Catreina”},”video_height”:720,”language”:”en”,”video_bitrate”:1987.1328125,”id”:”2309110144″,”meta_game”:”Star Wars: The Old Republic”,”broadcaster”:”fme”,”broadcast_part”:4,”audio_codec”:”uncompressed”,”up_time”:”Mon Dec 26 00:06:03 2011″,”video_width”:1280,”geo”:”US”,”channel_view_count”:6133751,”channel_subscription”:false,”embed_enabled”:true,”stream_type”:”live”,”video_codec”:”AVC”}] 我尝试使用以下代码加载它: class […]

如何序列化\反序列化属性名称依赖于数据的属性

我试图得到以下json(见下文)反序列化(使用newtonsoft json序列化器),问题是名为“2010-12”的变量,它显然依赖于返回的数据 – 它代表一个月和下个月的值将改为“2010-01”。 关于我如何处理以下课程的任何想法? [JsonObject(MemberSerialization.OptIn)] public class Crimes { [JsonProperty()] public Month Month { get; set; } } 示例JSON实例: { “commentary”: null, “crimes”: { “2010-12”: { “anti-social-behaviour”: { “crime_rate”: “0.46”, “crime_level”: “average”, “total_crimes”: 74 }, “other-crime”: { “crime_rate”: “0.35”, “crime_level”: “average”, “total_crimes”: 56 }, “all-crime”: { “crime_rate”: “1.12”, “crime_level”: “average”, “total_crimes”: 180 }, “robbery”: […]