这里要特别说明的是JsonMergeSettings,该对象用于设置合并时的行为,MergeArrayHandling是枚举,可设置为Concat(连接数组)、Union(跳过存在的元素,添加不存在的元素)、Replace(替换所有数组项)和Merge(根据数组索引将数组项合并在一起)。
10、使用动态类型dynamic查询JSON对象 string json = @"[ { 'Title': 'Json.NET is awesome!', 'Author': { 'Name': 'James Newton-King', 'Twitter': '@JamesNK', 'Picture': '/jamesnk.png' }, 'Date': '2013-01-23T19:30:00' } ]"; .Parse(json); dynamic blogPost = blogPosts[0]; Console.WriteLine(blogPost.Title); Json.NET is awesome! 11、使用ToObject将JSON对象或数组转换成C#对象 string json = @"{ 'd': [ { 'Name': 'John Smith' }, { 'Name': 'Mike Smith' } ] }"; .Parse(json); ]; >>(); Console.WriteLine(person[1].Name); Mike Smith 12、通过属性遍历JObject对象 } }; o.Properties()) { + property.Value); } name1 - value1 name2 - value2 o) { + property.Value); } name1 - value1 name2 - value2 13、使用ToString方法进行JSON序列化在JSON.NET中ToString方法会输出针对当前JSON对象的字符串表示形式,通过这个特点我们可以序列化对象,默认情况下会输出格式化后的JSON字符串,ToString方法提供一些重载,允许开发灵活配置序列化行为。
); Console.WriteLine(o.ToString()); { "string1": "value", "integer2": 99, "datetime3": "2000-05-23T00:00:00" }ToString方法也提供一个是否格式化重载方法,下面的示例演示输出压缩后的JSON字符串。
{"string1":"value","integer2":99,"datetime3":"2000-05-23T00:00:00"}下面的代码演示通过ToString方法提供的重载将日期格式化为JavaScript中的日期对象,这样的JSON在JS中就可以直接使用日期。
{"string1":"value","integer2":99,"datetime3":new Date(959032800000)} 14、JSON.NET支持BSON格式的序列化和反序列化BSON是一种类似于JSON格式,是一种二进制形式存储格式,简称BinaryJSON,它和JSON一样,支持内嵌的对象和数组,BSON可以做为网络数据交换的一种存储形式,它的优点是灵活性高,但它的缺点是空间利用率不是很理想,JSON.NET也支持BSON的序列化和反序列化。
); (data); JObject o; (ms)) { o = (.ReadFrom(reader); } ]; Console.WriteLine(value); value1 } }; (); (ms)) { o.WriteTo(writer); } .ToBase64String(ms.ToArray()); Console.WriteLine(data); KQAAAAJuYW1lMQAHAAAAdmFsdWUxAAJuYW1lMgAHAAAAdmFsdWUyAAA= 15、JSON.NET也支持JSON与XML数据格式之间的互转 string json = @"{ '@Id': 1, 'Email': 'james@example.com', 'Active': true, 'CreatedDate': '2013-01-20T00:00:00Z', 'Roles': [ 'User', 'Admin' ], 'Team': { '@Id': 2, 'Name': 'Software Developers', 'Description': 'Creators of fine software products and services.' } }"; ); Console.WriteLine(node.ToString()); <Root> <Email>james@example.com</Email> <Active>true</Active> <CreatedDate>2013-01-20T00:00:00Z</CreatedDate> <Roles>User</Roles> <Roles>Admin</Roles> <Team> <Name>Software Developers</Name> <Description>Creators of fine software products and services.</Description> </Team> </Root> string xml = @"<?xml version='1.0' standalone='no'?> <root> <person> <name>Alan</name> <url></url> </person> <person> <name>Louis</name> <url></url> </person> </root>"; (); doc.LoadXml(xml); .SerializeXmlNode(doc); Console.WriteLine(json); { "?xml": { "@version": "1.0", "@standalone": "no" }, "root": { "person": [ { "@id": "1", "name": "Alan", "url": "www.xocde.me" }, { "@id": "2", "name": "Louis", "url": "www.xocde.me" } ] } }当然,JSON.NET框架很强大,功能也很多,零度总结都是JSON.NET与LINQ结合的常用示例,希望对您有所帮助。
继续浏览有关 的文章
上一篇 JSON.NET对象序列化示例教程与本文相关的文章