Json.NET中的JConstructor和JRaw根据StackOverflow上的这个回答:Json.NET包含很多不属于JSON规范的函数。特别是,它允许解析一些“官方”无效的JSON文件。这包括未引用的属性、注释、构造函数等。这些都是从JToken分配的类型:JArrayJConstructorJContainerJObjectJPropertyJRawJValue请告诉我们以下内容是否正确:JToken.Parse(json)on"officially"validjsoncontainsJConstructororJRaw在它的后代中。如果json“正式”有效,则在这些后代中只会看到以下类型:JArray、JObject、JProperty、JValue。你的陈述是真实的。JConstructor旨在以JavaScript日期格式捕获日期,例如:newDate(1234656000000)。正如在JSON中序列化日期中所述:从技术上讲,根据规范,这是无效的JSON,但所有浏览器和一些JSON框架(包括Json.NET)都支持它。因此,在解析严格符合当前IETFRecommendation或RawJSONproposal的JSON时,JConstructor将不会出现。使用JToken.Parse(string)解析JSON时,JRaw永远不会出现。它主要用于促进从JToken层次结构编写预格式化的JSON文字。通过使用JRaw,您可以避免解析已经格式化的JSON,只是为了发出它,例如:varroot=newJObject(newJProperty("response",newJRaw(jsonLiteral)));varrootJson=root.ToString();而不是效率低下:varroot=newJObject(newJProperty("response",JToken.Parse(jsonLiteral)));也可以反序列化为JRaw以将JSON层次结构捕获为单个字符串文字,但我没有看到这样做的用途。例如,给定类:publicclassRootObject{publicJRawresponse{get;放;可以这样做:varrootDeserialized=JsonConvert.DeserializeObject(rootJson);varjsonLiteralDeserialized=(string)rootDeserialized.response;但是,这不一定比反序列化JToken更有效。如您所料,在解析严格有效的JSON时,只有JArray、JObject、JProperty和JValue存在。以上就是C#学习教程:Json.NET中的JConstructor和JRaw分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:
