Tag: json.net

序列化和反序列化扩展IEnumerable <KeyValuePair >的类型

我在C#中使用Parse.com的API并尝试序列化扩展ParseObject的类: [ParseClassName(“Battle”)] public class Battle : ParseObject { [ParseFieldName(“mapName”)] public string MapName { get { return GetProperty(“MapName”); } set { SetProperty(value, “MapName”); } } } 因为ParseObject是 IEnumerable<KeyValuePair> 输出错误: [ { “Key”: “mapName”, “Value”: “Worlds Collide” } ] 它应该看起来像: { MapName: “Worlds Collide” } 我曾尝试编写一个自定义的JsonConverter来处理它,但我不能在我的生活中让它正确地反序列化。 public class ParseObjectJsonConverter : JsonConverter { public override bool CanConvert(Type objectType) […]

至少有一个对象必须实现IComparable调用OrderBy()

我已经看到了这个问题,但我没有找到答案中的快乐…… 我想这样做: var coll = JsonConvert.DeserializeObject<ObservableCollection>(json); coll = coll.OrderBy(a => a.tags).Distinct().ToList(); 引发错误: 至少有一个对象必须实现IComparable。 目前我没有找到解决方案,所以我这样做: List categories = new List(); var coll = JsonConvert.DeserializeObject<ObservableCollection>(json); for (int i = 0; i < test.Count; ++i) { for (int j = 0; j < test[i].tags.Count; ++j) { _categories.Add(test[i].tags[j]); } } categories = _categories.Distinct().ToList(); 它有效,但我很想知道为什么第一个不起作用。 编辑: 我的数据来自JSON: ‘tags’: [ ‘Pantoufle’, […]

通过属性在(反)序列化期间控制枚举值格式

问题 假设我有一个表示某事或其他内容的枚举: public enum ResultState { Found, Deleted, NotFound } 在我的序列化json中,我希望这些值分别被序列化为”found” , “gone”或”not_found” 。 (注意:这不是 camelCase,而是完全自定义的字符串!) 我正在使用JSON.NET 迄今为止的故事 我的一切工作都差不多 – 枚举通过StringEnumConverter全局转换为字符串,但是我不能在生活中看到如何实现与上面类似的东西。 我最初的想法是将JsonProperty(…)属性应用于相关的枚举值,但这似乎不起作用! 潜在解决方案 我能想到的唯一方法是编写自己的inheritance自StringEnumConverter ,但是还有一些额外的魔法可以处理我创建的新JsonName属性。 正如您可能想象的那样,我不喜欢这个想法。 我想知道你是不是很棒的人可以建议一个更简单的选择?

如何在JSON中为空DataTable包含列元数据

如何在JSON中正确描述列元数据,稍后由Newtonsoft解析以构建ac#DataTable,这样我希望解决获取没有行的DataTable但没有列的问题,我需要列到当我传递一个空表时,使用标签创建并希望使用数据类型。 标准输入的示例: { “BrokerID” : “998”, “AccountID” : “1313”, “Packages”:[ { “PackageID”: 226, “Amount”: 15000, “Auto_sync”: true, “Color”: “BLUE” }, { “PackageID”: 500, “Amount”: 15000, “Auto_sync”: true, “Color”: “PEACH” } ] } 输入空表的示例:{“BrokerID”:“998”,“AccountID”:“1313”,“包”:[]} 当我使用JsonConvert.DeserializeObject(params[“Packages”]);解析时JsonConvert.DeserializeObject(params[“Packages”]); 我没有行,显然没有列,我正在寻找一种方法来描述json体内的列元数据。

有没有办法从某种类型的JSON.NET JObject中删除节点?

我有一个从API返回的JSON对象,有些节点是数组。 有没有办法让我完全根据“类型”将它们从对象中拉出来? 例如: { “result” : { “field1”: “value1”, “field2” : [ “val2”, “val3” ], “field3” : “val4”, “field4” : “val5” } } 我希望能够删除“field2”,因为它是一个数组。 我不知道如何以一种给我对象类型的方式遍历对象。 我正在使用C#和JSON.NET 6.0.5 谢谢!

Windows 10更新后,MVC应用程序中断

今天早上我醒来时发现我服务器上的MVC 4 Web应用程序坏了。 错误消息是: An exception of type ‘System.IO.FileNotFoundException’ occurred in mscorlib.dll but was not handled in user code. Additional information: Could not load file or assembly ‘Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed’ or one of its dependencies. The system cannot find the file specified. 我打开我的VS项目并从代码运行它(所以在另一台计算机上),发生了同样的错误! 我检查了我的服务器日志,发现更新是在凌晨5:06自动安装的。 其中一个更新是由安装程序包AspNetMVC4.msi完成的。 一分钟后,我的Web应用程序上的第一个错误开始流入。 在我的开发笔记本电脑上,同样的安装程序昨天(10月15日)下午1:10:10运行。 两台计算机上的问题相同。 我从未听说过Newtonsoft.Json(但现在我发现它是什么)。 看起来好像其中一个MVC dll(不太可能)或其中一个包dll(更有可能)引用了Newtonsoft。 我试图从nuget安装Newtonsoft。 这确实有一些影响,错误从FileNotFound更改为FileLoadException: An […]

使用Json.NET反序列化复杂对象

我需要反序列化从grogle maps api返回的这个json: { “destination_addresses”: [ “Via Medaglie D’Oro, 10, 47121 Forlì FC, Italia”, “Via Torino, 20123 Milano, Italia”, “Via Guglielmo Marconi, 71, 40121 Bologna, Italia”, “Via Irnerio, 40126 Bologna, Italia” ], “origin_addresses”: [ “Via Medaglie D’Oro, 10, 47121 Forlì FC, Italia”, “Via Torino, 20123 Milano, Italia”, “Via Guglielmo Marconi, 71, 40121 Bologna, Italia”, “Via […]

使用Nancy TinyIoC配置JsonNetSerializer和JsonNetBodyDeserializer

我是南希的菜鸟。 我一直在使用它作为生成REST API的框架。 我熟悉Json.NET所以我一直在玩Nancy.Serialization.JsonNet包。 我的目标:自定义JsonNetSerializer和JsonNetBodyDeserializer的行为(即更改设置)。 具体来说,我想加入以下设置…… var settings = new JsonSerializerSettings { Formatting = Formatting.Indented }; settings.Converters.Add( new StringEnumConverter { AllowIntegerValues = false, CamelCaseText = true } ); 我想使用内置的TinyIoC容器来执行此自定义,以避免inheritance链并限制Nancy.Serialization.JsonNet包中任何更改引起的潜在问题。 注意:作为临时解决方法,我利用inheritance来创建CustomJsonNetSerializer和CustomJsonNetBodyDeserializer 。 我已经尝试了几种方法来至少为JsonNetSerializer整合这种配置。 我还没有尝试使用TinyIoC配置JsonNetBodyDeserializer。 我想它会以同样的方式完成。 我尝试过的所有工作都在我的CustomNancyBootstrapper (它inheritance自DefaultNancyBootstrapper )中。 到目前为止最成功的方法:覆盖ConfigureApplicationContainer protected override void ConfigureApplicationContainer( TinyIoCContainer container ) { base.ConfigureApplicationContainer( container ); // probably don’t need both registrations, […]

解析Json.NET:“意外的令牌:StartObject”

我正在解析JSON,我收到以下错误: 我正在使用Newtonsoft.Json.NET DLL。 读取字符串出错。 意外的令牌:StartObject。 路径'[0]’,第1行,第2位。 这是我的代码: public static List GetPluginByCategory(string category) { var wc = new WebClient(); var json = wc.DownloadString(“http://api.bukget.org/api2/bukkit/category/” + category); var list = JsonConvert.DeserializeObject<List>(json); return list; } category可以是以下字符串之一: [“管理工具”,“反悲伤工具”,“聊天相关”,“开发者工具”,“经济”,“修复”,“趣味”,“一般”,“信息”,“力学”,“杂项” ,“角色扮演”,“传送”,“网站管理”,“世界编辑与管理”,“世界发电机” 编辑:这是我得到的回应: [{“description”: “Stop users swearing\n”, “name”: “a5h73y”, “plugname”: “NoSwear”}, {“description”: “Be sure that your server rules are read and accepted!”, “name”: […]

WebAPI,JSON.Net和失去小数精度

我使用WebAPI和JSON.Net遇到了一个奇怪的问题。 当反序列化已提交给我的API的JSON时,我似乎正在失去精确度! 我将小数提交到3位小数,但当值在我的对象中实现时,它只有2位小数! 我提交的JSON看起来像这样: { id: 1, name: ‘mock data’, value: 123.456 } 这绑定到一个看起来像这样的类: public class MockObject { public int Id { get; set; } public string Name { get; set; } public decimal Value { get; set; } } 为了完整性,这基本上就是我的WebAPI方法: public HttpResponseMessage Post (MockObject data) { // do something with the value here and […]