经过JObject和JArray建立JSON对象
咱们先用很是简单的方法来动态建立一些JSON,可经过JToken派生的JSON.NET对象来进行,最多见的JToken派生的类是JObject和JArray。json
正是由于JToken实现了IDynamicMetaProvider动态语言接口,因此能够使用dynamic关键字直观地建立动态对象,并把这个动态对象序列化为JSON字符串。 咱们经过JArray和JObject来建立一个示例:ide
[TestMethod]
public void JObjectOutputTest()
{
// strong type instance
var jsonObject = new JObject();spa
// you can explicitly add values here
jsonObject.Add("Entered", DateTime.Now);.net
// dynamic expando instance you can add properties to
dynamic album = jsonObject;对象
album.AlbumName = "Dirty Deeds Done Dirt Cheap";
album.Artist = "AC/DC";
album.YearReleased = 1976;blog
album.Songs = new JArray() as dynamic;接口
dynamic song = new JObject();
song.SongName = "Dirty Deeds Done Dirt Cheap";
song.SongLength = "4:11";
album.Songs.Add(song);ci
song = new JObject();
song.SongName = "Love at First Feel";
song.SongLength = "3:10";
album.Songs.Add(song);字符串
Console.WriteLine(album.ToString());
}
运行上面的示例代码,就能造成如下结构的JSON内容:get
{
"Entered": "2012-08-18T13:26:37.7137482-10:00",
"AlbumName": "Dirty Deeds Done Dirt Cheap",
"Artist": "AC/DC",
"YearReleased": 1976,
"Songs": [
{
"SongName": "Dirty Deeds Done Dirt Cheap",
"SongLength": "4:11"
},
{
"SongName": "Love at First Feel",
"SongLength": "3:10"
}
]
}
C#给JSON对象添加一个键值对
/// <summary>添加一个属性
///
/// </summary>
/// <param name="obj">待添加属性的对象</param>
/// <param name="key">键名</param>
/// <param name="value">值</param>
/// <returns>添加属性后的对象</returns>
public static object Add(object obj, string key, object value)
{
JObject jObj = JObject.Parse(JsonConvert.SerializeObject(obj));
jObj.Add(new JProperty(key, value));
return JsonConvert.DeserializeObject(jObj.ToString());
}