以上代码最重要的是没有明确指定类型,便可将动态对象进行JSON序列化,而JObject对象只是接收数据,具体结构通过动态语言在运行时生成,这意味着此代码可以在运行时被编译,从而体现动态语言的优势。序列化的结果如下图所示:
例子2、
//Newtonsoft.Json.Linq.JObject jsonObject = new Newtonsoft.Json.Linq.JObject {{"Entered", DateTime.Now}}; Newtonsoft.Json.Linq.JObject jsonObject = new Newtonsoft.Json.Linq.JObject(); jsonObject.Add("Entered", DateTime.Now); dynamic album = jsonObject; album.AlbumName = "非主流歌曲"; foreach (var item in jsonObject) //循环输出动态的值 JObject(基类为JContainer、JObject和JArray)是一个集合,实现了IEnumerable接口,因此你还可以轻松地在运行时循环访问 { Console.WriteLine(item.Key + "的值为:" + item.Value.ToString()); }
执行结果为:
例子3:
JObject.Parse()和JArray.Parse()方法导入JSON格式,JToken结构支持Parse()和Load()方法,这两个方法可以分别从字符串或各种流读取JSON数据。JValue包括最核心的JSON 解析能力,支持将字符串转化为我们熟悉的动态对象。将JSON字符串转换为成JObject对象,并强制转换为动态类型。
var jsonString = @"{""Name"":""小苹果"",""Company"":""韩国公司"", ""Entered"":""2016-11-26 00:14""}"; dynamic json = Newtonsoft.Json.Linq.JToken.Parse(jsonString) as dynamic; string name = json.Name; string company = json.Co