Tag: json

Newtonsoft.Json自定义序列化日期

我正在使用Newtonsoft.Json将我的日期从C#序列化为javscript我想要做的是让json序列化程序使用当前文化将日期格式化为字符串 这是我的Json序列化器得到的: JsonConvert.SerializeObject(DateTime.Now); 结果是: “2016-07-08T17:10:17.6722753-05:00” 但我更喜欢的是: “08/07/2016 17:10:57” 因为我目前的文化是巴西,我希望我的日期以上述方式显示。 是否可以全局 (对于任何可能被序列化的日期)告诉Newtonsoft.Json中的json序列化程序使用它就像使用date.ToString() (因为ToString尊重System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat的文化System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat并相应地给出正确的格式)

反序列化使得字段是空列表而不是空

如果我有这样的课程: [DataContract(Name = “”, Namespace = “”)] public class MyDataObject { [DataMember(Name = “NeverNull”)] public IList MyInts { get; set; } } 当下列字符串被反序列化时,有没有办法让MyInts字段成为非空的空列表? string serialized = @”{“”NeverNull””:null}”; MyDataObject myDataObject = JsonConvert.DeserializeObject(serialized); 我正在使用Newtonsoft.Json 我问的原因是我有一个相当复杂的json请求解析,它包含对象列表的嵌套,我想要反序列化代码来创建这些对象,所以我可以避免大量的空检查: if (foo.bar != null) { foreach (var bar in foo.bar) { if (bar.baz != null) { foreach (var baz in bar.baz) { […]

C# – 如何在变量名中使用无效字符

在C#中,我正在构建一个类(这里为了讨论目的而简化),最终将序列化为一些外部定义的JSON: { “$schema”: “http://example.com/person.json”, “name”: “John”, “age”: 86 } 在我的代码中我会有类似的东西: public class Person { public const string $schema= @”http://example.com/person.json”; public string name {get;set; } public int age {get; set;} } … Person person = new Person(); person.name = “John”; person.age = 88; JavaScriptSerializer serializer = new JavaScriptSerializer(); string json = serializer.Serialize(person); 在上面的代码中,$ schema导致出现“意外字符’$’错误。是否有解决方法?

使用json模式指定值可以是字符串或null

希望这对其他人来说并不明显,因为我发现http://json-schema.org/上的文档缺乏更精细的细节。 我正在获取一个json块,其中包含一些可以为null或字符串的属性。 如何在json模式(由json.NET的JsonSchema.Parse方法解析)中指定值可以是null类型还是类型字符串? 有什么简单的我缺少像为类型提供数组? 例如; “member_region”: { “type”: [ “string”, null ] } // this throws an exception 另外,有没有人比json-schema.org有更好的json架构细节来源? 我在哪里可以找到更多的例子? 我不想阅读大的doc / spec来找到一些可以在10行示例中轻松演示的内容。

有没有办法覆盖DataContractJsonSerializer如何序列化日期?

有没有办法改变DataContractJsonSerializer序列化日期的方式? 目前,它会将日期转换为: { “date”: “/Date(1260597600000-0600)/” } 我宁愿让它序列化为自1970年以来的毫秒。这样,其他语言可以很容易地使用json数据。

如何将参数传递给构造函数反序列化json

在使用Newtonsoft.Json反序列化对象时,将一些父实例传递给构造函数时遇到一个小问题。 我们假设我有以下课程 public class A { public string Str1 { get; set; } public IList Bs { get; set; } } public class B { public B(A a) { // a should not be null! Console.WriteLine(a.Str) } } 现在我对这个对象a serailze而不是反序列化: A a = new A() a.Bs = new List() a.Bs.Add(new B(a)); a.Bs.Add(new B(a)); a.Bs.Add(new B(a)); […]

构建JSON配置节

有没有办法让配置部分用JSON而不是XML编写? 假设我有以下ConfigurationSection : public class UsersConfig : ConfigurationSection { [ConfigurationProperty(“users”, IsRequired = false)] public UserCollection Users { get { return this[“users”] as UserCollection; } } } [ConfigurationCollection(typeof(UserElement), AddItemName = “user”] public class UsersCollection : ConfigurationElementCollection { protected override ConfigurationElement CreateNewElement() { return new UserElement(); } protected override object GetElementKey(ConfigurationElement element) { return ((UserElement)element).Name; } } […]

反序列化数组不支持JSON反序列化类型

我已经阅读了关于反序列化错误的其他两篇文章,但我没有得到任何结论,所以我发布了自己的问题。 我有一个返回JSON的WCF服务。 在对特定类型进行反序列化时,它会失败。 为了让您轻松复制错误,我将下面的JSON硬编码与调用一起。 基本上你应该能够复制/粘贴下面的代码并看到它失败。 消费者需要将其反序列化为工作对象。 s。反序列化失败,并显示标题中指出的错误消息。 注意:我意识到我的JSON中有斜杠。 那些是为了方便逃避报价。 谢谢。 示例代码: var s = new JavaScriptSerializer(); var jstr = “[{\”UserId\”:1,\”WorkoutId\”:1,\”WorkoutInfo\”:[\”Step 1\”,\”Step 2\”]},{\”UserId\”:2,\”WorkoutId\”:2,\”WorkoutInfo\”:[\”Step 1a\”,\”Step 2a\”]},{\”UserId\”:5,\”WorkoutId\”:0,\”WorkoutInfo\”:[\”new work1\”,\”new work 1\”,\”new work 1\”]}]”; Workout blah = s.Deserialize(jstr); var response = ServicePOST(“AddUserWorkout”, workout); 和锻炼课程: public class Workout { public int UserId { get; set; } public List WorkoutInfo { get; […]

Json日期时间问题

可能重复: 如何强制netwtonsoft json序列化程序将datetime属性序列化为字符串? 我使用Newtonsoft.Json将我的对象转换为JSon文件。 但我遇到日期时间问题,在我的对象datetime字段设置为”7/30/2012 8:29:12 PM”但在Json文件中我得到这种格式的日期时间字段”\/Date(1343660352227+0530)\/” 我需要以与对象相同的格式获取日期时间。 有可能吗?为了获得相同的格式,我该怎么办?

Json.NET如何在反序列化期间执行dependency injection?

当我有一个没有默认构造函数的类,即使用dependency injection来传递其依赖项时, Newtonsoft.Json可以创建这样的对象吗? 例如: public class SomeFoo { private readonly IFooDependency _dependency; public SomeFoo(IFooDependency dependency){ if(dependency == null) throw new ArgumentNullException(“dependency”); _dependency = dependency; } public string Data { get; set; } public int MoreData { get; set; } public void DoFoo(){ Data = _dependency.GetFooData(); MoreData = _dependency.GetMoreFooDate(); } } 在序列化过程中,我只关心存储Data和MoreData(以及对象的类型,但暂时不要复杂化)。 现在,为了反序列化,我可以调用类似的东西 var obj = […]