Tag: json.net

JsonSerializerSettings和Asp.Net Core

尝试设置JsonOutputFormatter选项: var jsonFormatter = (JsonOutputFormatter) options.OutputFormatters.FirstOrDefault(f => f is JsonOutputFormatter); if (jsonFormatter != null) { jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); } 要么 mvcBuilder.AddJsonOptions(jsonOptions => { jsonOptions.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); }); 但是一旦我添加这个,我得到: MissingMethodException:找不到方法:’Newtonsoft.Json.JsonSerializerSettings Microsoft.AspNet.Mvc.Formatters.JsonOutputFormatter.get_SerializerSettings()’。 我正在使用标准的Microsoft.AspNet.Mvc.Formatters.Json (6.0.0-rc1-final) 编辑:通过安装Newtonsoft.Json 6.0.6 (降级所有其他引用)解决它 有人已经有了吗? 谢谢..

在JObject层次结构中按名称搜索特定的JToken

我有一些来自服务器的Json响应,例如: {“routes” : [ { “bounds” : { “northeast” : { “lat” : 50.4639653, “lng” : 30.6325177 }, “southwest” : { “lat” : 50.4599625, “lng” : 30.6272425 } }, “copyrights” : “Map data ©2013 Google”, “legs” : [ { “distance” : { “text” : “1.7 km”, “value” : 1729 }, “duration” : { “text” : […]

将JSON反序列化为C#类

下面是我在成功创建新“作业代码”条目后从REST API获得的(略微)精简响应。 我需要将响应反序列化为某些类,但我很难过。 作为参考,我在.NET 3.5中使用JSON.NET(在SQL Server 2008 R2中的SSIS脚本中运行)来尝试反序列化。 这是JSON – 我显然无法控制它,因为它来自其他人的API: { “results”:{ “jobcodes”:{ “1”:{ “_status_code”:200, “_status_message”:”Created”, “id”:444444444, “assigned_to_all”:false, “billable”:true, “active”:true, “type”:”regular”, “name”:”1234 Main Street – Jackson” }, “2”:{ “_status_code”:200, “_status_message”:”Created”, “id”:1234567890, “assigned_to_all”:false, “billable”:true, “active”:true, “type”:”regular”, “name”:”4321 Some Other Street – Jackson” } } } } 在我的C#代码中,我确实定义了一个“JobCode”类,它只将JSON值部分映射到属性 – 我对返回给我的所有数据都不感兴趣: [JsonObject] class JobCode { [JsonProperty(“_status_code”)] public […]

我可以使用Json.net在一次操作中将嵌套属性序列化到我的类中吗?

让我们说我的模型如下: public class MyModel { public string Name { get; set; } public string[] Size { get; set; } public string Weight { get; set; } } 和Json这样: { “name” : “widget”, “details” : { “size” : [ “XL”,”M”,”S”, ] “weight” : “heavy” } } 我一直试图找到一种方法来序列化我的对象,而不是为“名称”创建一个模型,而为“详细信息”创建一个模型,因为这不能很好地映射到我的数据库,所以需要一点点玩杂耍来填充类。 我可以在JsonConvert.PopulateObject()上进行多次传递,如: var mod = new MyModel(); JsonConvert.PopulateObject(json.ToString(), mod); JsonConvert.PopulateObject(json[“details”].ToString(), […]

使用时,JSON.Net抛出StackOverflowException

我将这个简单的代码编写为Serialize类为flatten,但是当我使用[JsonConverter(typeof(FJson))]注释时,它会抛出StackOverflowException 。 如果我手动调用SerializeObject ,它可以正常工作。 如何在注释模式下使用JsonConvert: class Program { static void Main(string[] args) { A a = new A(); a.id = 1; abname = “value”; string json = null; // json = JsonConvert.SerializeObject(a, new FJson()); without [JsonConverter(typeof(FJson))] annotation workd fine // json = JsonConvert.SerializeObject(a); StackOverflowException Console.WriteLine(json); Console.ReadLine(); } } //[JsonConverter(typeof(FJson))] StackOverflowException public class A { public […]

使用Json.Net以dd / mm / yyyy格式反序列化日期

我正在尝试将对象从JSON数据反序列化为C#类(我使用的是Newtonsoft Json.NET):数据包含字符串值中的日期,如09/12/2013格式为dd/mm/yyyy 。 如果我调用JsonConvert.DeserializeObject(data); 日期加载到C#类的日期时间属性,如mm/dd/yyyy ,然后日期值是2013年9月12日(而不是2013年12月9日)。 是否可以配置JsonConvert以正确的格式获取日期?

如何使用动态(数字)键名称反序列化子对象?

如何在.net中使用newtonsoft json.net反序列化json结构。 { “users” : { “parentname”:”test”, “100034” : { “name” : “tom”, “state” : “WA”, “id” : “cedf-c56f-18a4-4b1” }, “10045” : { “name” : “steve”, “state” : “NY”, “id” : “ebb2-92bf-3062-7774” }, “12345” : { “name” : “mike”, “state” : “MA”, “id” : “fb60-b34f-6dc8-aaf7” } } } 我试过下面的代码,但它不起作用。 我收到错误’错误转换值“test”键入’ConsoleApplication2.User’。 路径’users.parentname’,第5行,第35位。’ class Program { static […]

JSON.NET Parser *似乎*是双重序列化我的对象

我的问题是: 这是从我的WebAPI控制器发回的响应。 “[ [ {\”id\”:\”identifier\”}, {\”name\”:\”foobar\”} ] ]” 请注意,响应包含在引号中,并且所有嵌入的引用都被转义。 这显然是个问题。 我可以为JSON.NET Serializer提供任何设置以防止这种情况发生吗? 编辑 正如pswg在他的回答中猜到的那样,我正在使用JSON.NET JsonConvert.SerializeObject(instance) 执行我的序列化。 我这样做是因为当我构建我的自定义转换器时,我将它们包含在我的WepApiConfig中的JsonConvert.DefaultSettings中(我显然认为这不是问题) 我之前尝试将我的HttpGets的返回类型交换为“我的对象类型”,响应是我对象的ToString()方法的json表示…这让我知道序列化没有通过我的转换器。 将我的HttpGets的返回类型从字符串更改为“我的对象类型”并将这些转换器直接插入到WebAPi的默认HttpConfiguration中就可以了。 config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new FooConverter()); config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new BarConverter()); 十分简单。

如何在序列化json时忽略JsonProperty(PropertyName =“someName”)?

我有一些使用ASP.Net MVC的C#代码,它使用Json.Net来序列化一些DTO。 为了减少有效负载,我使用[JsonProperty(PropertyName =“shortName”)]属性在序列化期间使用较短的属性名称。 当客户端是另一个.Net应用程序或服务时,这非常有用,因为反序列化将对象层次结构重新组合在一起,使用更长的更友好的名称,同时保持实际的传输负载低。 当客户端通过浏览器javascript / ajax时,问题就出现了。 它发出请求,并获取json …但是json正在使用缩短的不太友好的名称。 如何让json.net序列化引擎以编程方式忽略[JsonProperty(PropertyName =“shortName”)]属性? 理想情况下,我的MVC服务将在那里运行,并且通常使用缩短的属性名称进行序列化。 当我的代码检测到特定参数时,我想使用较长的名称序列化数据并忽略[JsonProperty()]属性。 有什么建议? 谢谢, 凯文

如何使用Json.Net序列化/反序列化具有其他属性的自定义集合

我有一个自定义集合(实现IList),它有一些自定义属性,如下所示: class FooCollection : IList { private List _foos = new List(); public string Bar { get; set; } //Implement IList, ICollection and IEnumerable members… } 当我序列化时,我使用以下代码: JsonSerializerSettings jss = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Auto }; string serializedCollection = JsonConvert.SerializeObject( value , jss ); 它正确地序列化和反序列化所有收集项目; 但是,不考虑FooCollection类中的任何额外属性。 无论如何将它们包含在序列化中?