Articles of json.net

ASP.NET WebAPI JSON绑定案例敏感性

从ASP.NET WebAPI Beta升级到RC已经提供了一些兴奋和很多挫折感。 我已经能够解决大多数问题,但是现在正在咬我的是JSON请求数据的区分大小写。 用于JSON请求的格式化程序(默认情况下是JSON.NET格式化程序)似乎区分大小写,而用于表单urlencoded数据的格式化程序则不区分大小写。 有没有办法配置JSON请求以使用不区分大小写的格式化程序? 这是一个简单的例子来说明我对JSON请求的问题: HTML / JavaScript Click here! $(function () { $(“#tester”).on(“click”, function() { $.ajax({ type: “POST”, url: “/Api/Test/Index/” + 168, data: ko.toJSON({ key: 123, value: “test value” }), // THIS FAILS // Key: 123, Value: “test value” <- BUT THIS WORKS contentType: "application/json; charset=utf-8", statusCode: { 200: function () { […]

如何以编程方式从动态JObject获取属性

我正在使用NewtonSoft JObject解析JSON字符串。 如何以编程方式从动态对象获取值? 我想简化代码,不要为每个对象重复自己。 public ExampleObject GetExampleObject(string jsonString) { ExampleObject returnObject = new ExampleObject(); dynamic dynamicResult = JObject.Parse(jsonString); if (!ReferenceEquals(dynamicResult.album, null)) { //code block to extract to another method if possible returnObject.Id = dynamicResult.album.id; returnObject.Name = dynamicResult.album.name; returnObject.Description = dynamicResult.albumsdescription; //etc.. } else if(!ReferenceEquals(dynamicResult.photo, null)) { //duplicated here returnObject.Id = dynamicResult.photo.id; returnObject.Name = dynamicResult.photo.name; returnObject.Description […]

使用Newtonsoft Json.NET解析多维JSON数组

我让Json返回如下: [{“CreatedBy”:“GIS_DB”,“CreatedDate”:“3/8/2012 10:44:00 AM”,“Id”:39,“ModifiedBy”:“”,“ModifiedDate”:“”,“名称“:”CF-39“,”StatusId“:1,”TrailCoordinates“:[{”CreatedBy“:”GIS_DB“,”CreatedDate“:”3/8/2012 10:44:00 AM“,”Id“: 1637年, “纬度”:32.76004207, “经度”: – 97.34006853, “ModifiedBy”: “”, “ModifiedDate”: “”, “SortOrder的”:1, “TrailId”:39},{ “CreatedBy”: “GIS_DB” ,“CreatedDate”:“3/8/2012 10:44:00 AM”,“Id”:1638,“纬度”:32.76004333,“经度”: – 97.34012121,“ModifiedBy”:“”,“ModifiedDate”:“ “,”SortOrder“:2,”TrailId“:39}]},{”CreatedBy“:”GIS_DB“,”CreatedDate“:”3/8/2012 10:44:00 AM“,”Id“:40, “ModifiedBy”: “”, “ModifiedDate”: “”, “名称”: “CF-40”, “StatusId”:1, “TrailCoordinates”:[{ “CreatedBy”: “GIS_DB”, “CreatedDate”:“3 / 8/2012 10:44:00 AM“,”Id“:3755,”纬度“:32.76034332,”经度“: – 97.3402069,”ModifiedBy“:”“,”ModifiedDate“:”“,”SortOrder“:1 ,“TrailId”:40},{“CreatedBy”:“GIS_DB”,“CreatedDate”:“3/8/2012 10:44:00 AM”,“Id”:3756,“纬度”:32.76019181,“经度” :-97.3402448, “ModifiedBy”: “”, “ModifiedDate”: “”, “SortOrder的”:2 “TrailId”:40}]}] 这些是我的class级…… […]

自定义Json.NET序列化:将对象转换为数组以避免重复属性名称

我将大量不同的JSON图从服务器发送到客户端(我控制它们),它们都包含一个病态案例:大量同类(相同类型)值。 因此,例如,部分有效负载如下所示: [{“LongPropertyName”:87, “AnotherVeryLongPropertyName”:93, “BlahBlahBlahBlahBlah”: 78}, {“LongPropertyName”:97, “AnotherVeryLongPropertyName”:43, “BlahBlahBlahBlahBlah”: 578}, {“LongPropertyName”:92, “AnotherVeryLongPropertyName”:-3, “BlahBlahBlahBlahBlah”: 817}, … 我添加了一些格式,但正如你所看到的,从霍夫曼编码的角度来看,这是荒谬的,即应该有效地表达常见的东西。 所以,既然我控制了反序列化和序列化结束,我想实现一个转换: [{“Key1″:87,”Key2”:99},{“Key1″:42,”Key2”:-8}] 变得像这样: [[“$”,”Key1″,”Key2″],[87,99],[42,-8]] 正如你所看到的那样,即使只有两个物体也更紧凑。 我在哪里挂钩到Json.NET来进行这种转换? 我想自动为尽可能多的对象执行此操作。 我找到了ContractResolvers,但我不确定它们是否在我想要的阶段发生 – 我不确定如何使用它的方法将JSON对象/字典转换为数组。 或者,如果已经为Json.NET实现了类似的东西,我想要使用它。 但我并不担心我想要做出的那种改变(见上文),就在我将Json.NET挂钩以实现它的地方。 (我试过gzipping它。它工作正常并在70%和95%之间剃掉,但它仍然必须输出完整的JSON文本并完成所有压缩/解压缩。这个问题是:我如何输出更紧凑从一开始的数据forms?) 更新:你这样做的方法是使用JsonConverter 。 我已经写过几篇,但出于某种原因,我认为他们会发生冲突。 我最终得到的是Brian Rogers的基础以及一些更改,以嵌入/展平任何直接包含的对象 。 这不是原始问题的一部分,但我这样做的原因是因为如果我有: [{“A”: 42,”B”:{“PropOne”:87,”PropTwo”:93,”PropThree”:78}}, {“A”:-72,”B”:{“PropOne”:97,”PropTwo”:43,”PropThree”:578}] ……我最终得到了: [[“A”,”B”],[42,{“PropOne”:87,”PropTwo”:93,”PropThree”:78}], [-72,{“PropOne”:97,”PropTwo”:43,”PropThree”:578}]] ……这并没有真正保存任何东西。 如果我将对象嵌入/展平为其组成键,我最终得到: [[“A”,”B_PropOne”,”B_PropTwo”,”B_PropThree”],[42,87,93,78],[-72,97,43,578]]

JsonObject模拟Facebook SDK

我必须使用facebook c#sdk作为.net 3.5中的新项目,我知道最新版本有4个示例 – 但它也是针对3.5编译的,所以完全可以工作。 无论如何,如果我非常愚蠢,请原谅我。 但我正在寻找将json对象转换为我的模型,我可以做这样的事情吗? public ActionResult About() { var app = new FacebookApp(); JsonObject friends = (JsonObject)app.Get(“me/friends”); ViewData[“Albums”] = new Friends((string)friends.ToString()); return View(); } public class Friends { public string name { get; set; } public string id { get; set; } public Friends(string json) { JArray jObject = JArray.Parse(json); JToken jData […]

Json.net使用JsonProperty来获取inheritance的属性

您好我正在尝试使用Json.net反序列化此json代码。 它是关于特定电影的信息。 除了cast属性之外,一切都按预期工作。 在信用财产中inheritance的。 我为我的Movie类中的一个名为Actor的演员和一个这个actor类的列表做了一个类 { “id”:550, “original_title”:”Fight Club”, “credits”: { “cast”: [ { “id”:819, “name”:”Edward Norton”, “character”:”The Narrator”, “order”:0, “cast_id”:4, “profile_path”:”/eIkFHNlfretLS1spAcIoihKUS62.jpg” }, { “id”:287, “name”:”Brad Pitt”, “character”:”Tyler Durden”, “order”:1, “cast_id”:5, “profile_path”:”/kc3M04QQAuZ9woUvH3Ju5T7ZqG5.jpg” }, { “id”:1283, “name”:”Helena Bonham Carter”, “character”:”Marla Singer”, “order”:2, “cast_id”:6, “profile_path”:”/58oJPFG1wefMC0Vj7sFzHPrm67J.jpg” }, { “id”:7470, “name”:”Meat Loaf”, “character”:”Robert ‘Bob’ Paulson”, “order”:3, “cast_id”:7, “profile_path”:”/pwNyXgegO1nlZ8uWT847JM8EjGj.jpg” }, […]

为什么Json.NET DeserializeObject会将时区更改为本地时间?

我正在使用json.net反序列化DateTimeOffset ,但它忽略指定的时区并将datetime转换为本地偏移量。 例如,给定 var content = @”{“”startDateTime””:””2012-07-19T14:30:00+09:30″”}”; 使用以下方法进行反序列化时: var jsonSerializerSettings = new JsonSerializerSettings() { DateFormatHandling = DateFormatHandling.IsoDateFormat, DateParseHandling = DateParseHandling.DateTimeOffset, DateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind }; var obj = JsonConvert.DeserializeObject(content, jsonSerializerSettings); obj将包含一个包含DateTimeOffset的属性,但该值将为2012-07-19T15:30:00+10:30即转换为本地时区而不是保留原始时区。 有没有办法让值按预期进行解析,以便生成的DateTimeOffset属性与提供的值匹配?

如何使用Newtonsoft.Json包在C#(4.0)中解析我的json字符串?

我是JSON的新手。在我的asp.net应用程序中,我想解析json字符串。所以,我使用了Newtonsoft.Json包来读取和写入json数据。现在,我能够解析简单的json数据。但是现在我收到了一些复杂的json数据用于解析。所以,我有点打击它。 这是JSON数据: { quizlist: [ { QUIZ: { ‘QPROP’: [ { ‘name’: ‘FB’, ‘intro’: ”, ‘timeopen’: ‘1347871440’, ‘timeclose’: ‘1355733840’, ‘timelimit’: ‘0’, ‘noofques’: ‘5’, ‘QUESTION’: { ‘QUEPROP’: [ { ‘questiontext’: ‘Scienceisbasedont’, ‘penalty’: ‘0.3333333’, ‘qtype’: ‘shortanswer’, ‘answer’: ’cause-and-effect’, ‘mark’ : ‘5’, ‘hint’: ” }, { ‘questiontext’: ‘otherscientistsevaluateit’, ‘penalty’: ‘0.3333333’, ‘qtype’: ‘shortanswer’, ‘answer’: ‘Peerreview’, ‘mark’ : ‘5’, ‘hint’: […]

将json反序列化为具有默认私有构造函数的类的C#对象

我需要将json反序列化为以下类。 public class Test { public string Property { get; set; } private Test() { //NOTHING TO INITIALIZE } public Test(string prop) { Property = prop; } } 我可以创建一个Test实例 var instance = new Test(“Instance”); 考虑我的json之类的东西 “{ “Property”:”Instance” }” 我如何创建Test类的对象,因为我的默认构造函数是私有的,我得到的对象是Property为NULL 我正在使用Newtonsoft Json解析器。

Json.net缓慢序列化和反序列化

我有一个问题 – Json.Net序列化我的对象真的很慢。 我有一些基础课: public class authenticationRequest { public string userid; public string tid; public string token; public string platform; public string version; } 而且我正在将它序列化 string jsonDataToSend = JsonConvert.SerializeObject(dataToSend); 此操作大约需要1900毫秒。 与来自Json.net CodePlex页面的信息相比 : 这需要很长时间。 出于测试目的,我将我的类交换为一个简单的字符串: string jsonDataToSend = JsonConvert.SerializeObject(“fsdfsdfsdfs”); 转换仍需要约900毫秒。 是什么原因? 我能做些什么来更快地序列化这些数据?