Tag: json.net

Json.NET将json字符串和映射属性反序列化或序列化为运行时定义的不同属性名称

我有以下JSON字符串: { “values”: { “details”: { “property1”: “94”, “property2”: “47”, “property3”: “32”, “property4”: 1 }, count: 4 } } 我将把它映射到以下模型: public class Details { public string property1 { get; set; } public string property2 { get; set; } public string property3 { get; set; } public int property4 { get; set; } } public class […]

Json.net重命名属性

我有一个表示JSON的字符串,我想使用JSON.NET重命名一些属性。 我需要一个generics函数来用于任何JSON。 就像是: public static void Rename(JContainer container, Dictiontionary mapping) { foreach (JToken el in container.Children()) { JProperty p = el as JProperty; if(el != null && mapping.ContainsKey(p.Name)) { // **RENAME THIS NODE!!** } // recursively rename nodes JContainer pcont = el as JContainer; if(pcont != null) { Rename(pcont, mapping); } } } 怎么做??

Json.NET序列化私有成员而不是只读属性

如何自定义Json.NET以序列化私有成员而不是序列化公共只读属性(不使用属性)。 我已经开始创建一个自定义的IContractResolver但有点迷失。

Newtonsoft Json将字典反序列化为DataContractJsonSerializer中的键/值列表

我有一个字典序列化存储与DataContractJsonSerializer,我想用Newtonsoft.Json反序列化。 DataContractJsonSerializer已将Dictionary序列化为键/值对列表: {“Dict”:[{“Key”:”Key1″,”Value”:”Val1″},{“Key”:”Key2″,”Value”:”Val2″}]} 是否有任何很酷的选项我可以给JsonConvert.DeserializeObject() ,它将支持该数据格式和Newtonsoft.Json的格式? {“Dict”:{“Key1″:”Val1″,”Key2″:”Val2”}} 是Newtonsoft.Json创建的漂亮格式,我希望能够在过渡期内同时读取旧的DataContract格式和新的Newtonsoft格式。 简化示例: //[JsonArray] public sealed class Data { public IDictionary Dict { get; set; } } [TestMethod] public void TestSerializeDataContractDeserializeNewtonsoftDictionary() { var d = new Data { Dict = new Dictionary { {“Key1”, “Val1”}, {“Key2”, “Val2”}, } }; var oldJson = String.Empty; var formatter = new DataContractJsonSerializer(typeof (Data)); using […]

Json.Net和ActionResult

我自己建立一个JObject,并希望将其作为ActionResult返回。 我不想创建然后序列化数据对象 例如 public ActionResult Test(string id) { var res = new JObject(); JArray array = new JArray(); array.Add(“Manual text”); array.Add(new DateTime(2000, 5, 23)); res[“id”] = 1; res[“result”] = array; return Json(res); //??????? }

Web API:在操作或控制器级别配置JSON序列化程序设置

在应用程序级别覆盖Web API的默认JSON序列化程序设置已涵盖在许多SO线程中。 但是如何在动作级别配置其设置? 例如,我可能希望在我的一个操作中使用camelcase属性进行序列化,但不能在其他操作中进行序列化。

在使用JSON.NET序列化对象时,如何添加自定义根节点?

我已经为我的一些对象添加了一个自定义属性,如下所示: [JsonCustomRoot(“status”)] public class StatusDTO { public int StatusId { get; set; } public string Name { get; set; } public DateTime Created { get; set; } } 属性非常简单: public class JsonCustomRoot :Attribute { public string rootName { get; set; } public JsonCustomRoot(string rootName) { this.rootName = rootName; } } 序列化对象实例时JSON.NET的默认输出是: {“StatusId”:70,”Name”:”Closed”,”Created”:”2012-12-12T11:50:56.6207193Z”} 现在的问题是: 如何使用自定义属性的值向JSON添加根节点,如下所示 : […]

将JSON递归反序列化为IDictionary

我正在尝试将一些较旧的作品转换为使用Newtonsoft JSON.NET。 使用System.Web.Script.Serialization.JavaScriptSerializer.Deserialize方法的默认处理(例如,如果未指定目标类型)是为内部对象返回Dictionary 。 这实际上是JSON非常有用的基本类型,因为它也恰好是ExpandoObjects使用的基础类型,并且是动态类型最明智的内部实现。 如果我指定此类型,例如: var dict = JsonConvert.DeserializeObject<Dictionary>(json); JSON.NET将正确地反序列化最外层的对象结构,但它为任何内部结构返回一个JObject类型。 我真正需要的是将相同的外部结构用于任何内部对象类型结构。 有没有办法指定一个用于内部对象的类型,而不仅仅是返回的最外层类型?

将WCF 4中的默认JSON序列化程序替换为JSON.NET

我想用JSON.NET替换默认的WCF JSON(对于所有数据类型)序列化。 我在网上搜索过,找不到合适的解决方案。 这是我的目标: [JsonObject] public class TestObject { [JsonProperty(“JsonNetName”)] public string Name = “John”; [JsonProperty] public DateTime Date = DateTime.Now; } 这是我的WCFfunction: [OperationContract] [WebGet(BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)] List Get(); 这是Global.asax中的代码: protected void Application_Start(object sender, EventArgs e) { // Create Json.Net formatter serializing DateTime using the ISO 8601 format var serializerSettings = new […]

从Json字符串中提取数据

我有一个包含Json的字符串。 它看起来像这样: “status_code”:200, “status_txt”:”OK”, “data”: { “img_name”:”D9Y3z.png”, “img_url”:”http:\/\/s1.uploads.im\/D9Y3z.png”, “img_view”:”http:\/\/uploads.im\/D9Y3z.png”, “img_width”:”167″, “img_height”:”288″, “img_attr”:”width=\”167\” height=\”288\””, “img_size”:”36.1 KB”, “img_bytes”:36981, “thumb_url”:”http:\/\/s1.uploads.im\/t\/D9Y3z.png”, “thumb_width”:360, “thumb_height”:360, “source”:”http:\/\/www.google.com\/images\/srpr\/nav_logo66.png”, “resized”:”0″, “delete_key”:”df149b075ab68c38″ } 我试图抓住“img_url”。 我安装了Json.NET,我在这里发现了类似的问题.. 例如这样的事情: JObject o = JObject.Parse(“{‘People’:[{‘Name’:’Jeff’},{‘Name’:’Joe’}]}”); // get name token of first person and convert to a string string name = (string)o.SelectToken(“People[0].Name”); 在我的情况下,我改变了(“People[0].Name”)到(“img_url”) , (“img_url[0])等等。没有运气 这是我现在的代码: public string tempJson { get; […]