C#里使用JObject实现动态生成实体对象、动态创建Json字符串

###########################################################

通过JObject和JArray创建JSON对象
我们先用非常简单的方法来动态创建一些JSON,可通过JToken派生的JSON.NET对象来进行,最常见的JToken派生的类是JObject和JArray。

正是因为JToken实现了IDynamicMetaProvider动态语言接口,所以可以使用dynamic关键字直观地创建动态对象,并把这个动态对象序列化为JSON字符串。 我们通过JArray和JObject来创建一个示例:

[TestMethod]

public void JObjectOutputTest()
{
    // strong type instance
    var jsonObject = new JObject();

    // you can explicitly add values here
    jsonObject.Add("Entered", DateTime.Now);

    // 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;

    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);

    song = new JObject();
    song.SongName = "Love at First Feel";
    song.SongLength = "3:10";
    album.Songs.Add(song);

    Console.WriteLine(album.ToString());
}
运行上面的示例代码,就能形成以下结构的JSON内容:

{
    "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());
        }

################################################################

以上摘自别人的博客内容,下面是一个较为复杂的嵌套 json例子

{
    "Trans": {
        "Head": {
            "ResultCode": "1", 
            "ErrMsg": "交易成功"
        }, 
        "Body": " "
    }
}

c#示例:

var jsonObject_head = new JObject();
            jsonObject_head.Add("ResultCode", "1");
            jsonObject_head.Add("ErrMsg", "交易成功");

            var jsonObject = new JObject();
            dynamic album = jsonObject;
            album.Head = jsonObject_head;
            album.Body = "调用成功";

            var jsonObject_Mandala = new JObject();
            jsonObject_Mandala.Add("Trans", album);
            dynamic album_Mandala = jsonObject_Mandala;

            MessageBox.Show(album_Mandala.ToString());

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值