Tag: json.net

使用JObject即时创buildJSON

对于我的一些unit testing,我希望能够build立特定的JSON值(在这种情况下是录制专辑),可以用作被测系统的input。 我有以下代码: var jsonObject = new JObject(); jsonObject.Add("Date", DateTime.Now); jsonObject.Add("Album", "Me Against The World"); jsonObject.Add("Year", 1995); jsonObject.Add("Artist", "2Pac"); 这工作正常,但我从来没有真正喜欢“魔术string”的语法,并希望更接近于JavaScript中的expando属性语法是这样的: jsonObject.Date = DateTime.Now; jsonObject.Album = "Me Against The World"; jsonObject.Year = 1995; jsonObject.Artist = "2Pac";

使用JSON.NET序列化/反序列化对象字典

我试图序列化/反序列化一个Dictionary<string, object>这似乎正常工作,如果对象是一个简单的types,但对象是更复杂的时候不工作。 我有这个class级: public class UrlStatus { public int Status { get; set; } public string Url { get; set; } } 在我的字典中,我添加了一个List<UrlStatus>其中包含一个“redirect链”键和一些简单的string,其中键为“Status”,“Url”,“Parent Url”。 我从JSON.Net返回的string如下所示: {"$type":"System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[System.Object, mscorlib]], mscorlib","Status":"OK","Url":"http://www.ehow.com/m/how_5615409_create-pdfs-using-bean.html","Parent Url":"http://www.ehow.com/mobilearticle35.xml","Redirect Chain":[{"$type":"Demand.TestFramework.Core.Entities.UrlStatus, Demand.TestFramework.Core","Status":301,"Url":"http://www.ehow.com/how_5615409_create-pdfs-using-bean.html"}]} 我用来序列化的代码如下所示: JsonConvert.SerializeObject(collection, Formatting.None, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects, TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple }); 反序列化我在做: JsonConvert.DeserializeObject<T>(collection, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects, TypeNameAssemblyFormat = […]

使用JSON.NET将异构JSON数组反序列化为协变List <>

我有一个JSON数组包含具有不同属性的不同types的对象。 其中一个属性称为“types”,并确定数组项目的types。 这里是我的数据的一个例子: [{ type : "comment", text : "xxxx" }, { type : "code", tokens : [{ type : "ref", data : "m" }, { type : "operator", data : "e" } ] }, { type : "for", boundLocal : { type : "local", name : "i", kind : "Number" }, upperBound : { […]

Newtonsoft JSON – dynamic对象

我正在使用Newtonsoft JSON库对传入的原始JSON执行dynamic反序列化,并发现了一些我无法解释的东西。 起点是以下JSONstring: { "task": { "dueDate": "2012-12-03T00:00:00" } } 那里没有太复杂的… 在代码中,我是这样做的: var dyn = JsonConvert.DeserializeObject<dynamic>(rawJson); DateTime dueDate = dyn.task.dueDate.Value; 这段代码已经存在好几个月了,可以正常工作,但是在最近的testing版本中,我们发现了以下错误: “Newtonsoft.Json.Linq.JObject”不包含“任务”的定义 堆栈跟踪:在CallSite.Target(Closure,CallSite,对象)在System.Dynamic.UpdateDelegates.UpdateAndExecute1 [T0,TRet](CallSite站点,T0 arg0) 现在这是奇怪的地方,如果我改变上面的代码,一切都开始工作了: DateTime dueDate = dyn.task.dueDate.Value; 至 DateTime dueDate = dyn["task"]["dueDate"].Value; 所以,虽然这是“固定的”,但我不明白为什么这个问题会解决,可能的原因是什么。 有没有人有任何想法

将JSON数组反序列化为强types的.NET对象

当我可以调用第三方api并获得单个类的数据时,所有的反序列化都可以使用这个代码 TheUser me = jsonSerializer.Deserialize(response, typeof(TheUser)) as TheUser 当我尝试并反序列化一个数组的JSON响应内容时,问题就来了 { "data": [ { "name": "A Jones", "id": "500015763" }, { "name": "B Smith", "id": "504986213" }, { "name": "C Brown", "id": "509034361" } ] } 我只能得到序列化工作,如果我使用“数据”成员周围的自定义包装类,该成员需要是types的List<object> 。 如果它有他们作为typesList<TheUser>我从JsonParser DesializeType方法得到ArgumentException 。 我原本试图没有像这样的包装types连载 List<TheUser> freinds = jsonSerializer.Deserialize(response, typeof(List<TheUser>)) as List<TheUser>; 但是这只是给我一个空的集合。 当然,我必须能够将数组反序列化为强types列表。

如何使用JSON.NET通过ASP.NET MVC传递JSONdate值?

可能重复: 格式化Microsoft JSONdate? ASP.NET函数Json()格式化并返回一个date {"d":"\/Date(1240718400000)\/"} 必须在客户端处理,这是有问题的。 对于来回发送date值的方法,您有什么build议?

自定义JsonConverter(Web API)中的Json.Net JsonSerializer中的自引用循环

该项目是一个Asp.Net Web API Web服务。 我有一个types层次结构,我需要能够序列化到和从Json,所以我从这个SO的代码: 如何在JSON.NET中实现自定义JsonConverter反序列化基类对象的列表? ,并将转换器应用于我的层次结构的基类; 像这样的东西(这里有伪代码隐藏不相干的东西): [JsonConverter(typeof(TheConverter))] public class BaseType{ ///note the base of this type here is from the linked SO above private class TheConverter : JsonCreationConverter<BaseType>{ protected override BaseType Create(Type objectType, JObject jObject){ Type actualType = GetTypeFromjObject(jObject); /*method elided*/ return (BaseType)Activator.CreateInstance(actualType); } } } public class RootType { public BaseType BaseTypeMember […]

有没有一种方法可以忽略Json.NET中的只读属性而不使用JsonIgnore属性?

有没有一种方法可以忽略使用Json.NET序列化器的JsonIgnore属性,但不使用JsonIgnore属性? 例如,我有一个类与这些get属性: public Keys Hotkey { get; set; } public Keys KeyCode { get { return Hotkey & Keys.KeyCode; } } public Keys ModifiersKeys { get { return Hotkey & Keys.Modifiers; } } public bool Control { get { return (Hotkey & Keys.Control) == Keys.Control; } } public bool Shift { get { return (Hotkey […]

Json.Net中的私人设置者

我知道有一个属性来处理私人setter,但我希望这种行为作为默认,有没有办法做到这一点? 除了调整来源。 如果有这样的设置会很好。

使用Json.NetparsingJSON数组

我正在与Json.Netparsing一个数组。 我想要做的是将名称/值对拉出数组,并分配JObject时分配给特定的variables。 这是我在数组中得到的: [ { "General": "At this time we do not have any frequent support requests." }, { "Support": "For support inquires, please see our support page." } ] 以下是我在C#中获得的内容: WebRequest objRequest = HttpWebRequest.Create(dest); WebResponse objResponse = objRequest.GetResponse(); using (StreamReader reader = new StreamReader(objResponse.GetResponseStream())) { string json = reader.ReadToEnd(); JArray a = JArray.Parse(json); //Here's […]