C#中服务端接受前端JSON字符串转换成字典集合

 

我们是否可以把从前端接受的JSON字符串转换成字典集合呢?

比如从前端接收:{'size':'10', 'weight':'10kg'}

在服务端转换成:[{size:"10"},{weight:"10kg"}]这样的字典集合

通过Newtonsoft的DeserializeObject<Dictionary<string, string>>方法可以把JSON字符串反序列化成字典集合。

假设有这样的一个Model

 

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

public class Product
{
    public string ProductDetails { get; set; }
    public Dictionary<string, string> ProductDetailList
    {
        get
        {
            if (string.IsNullOrWhiteSpace(ProductDetails))
            {
                return new Dictionary<string, string>();
            }
            try
            {
                var obj = JToken.Parse(ProductDetails);
            }
            catch (Exception)
            {
                throw new FormatException("ProductDetails不符合json格式.");
            }
            return JsonConvert.DeserializeObject<Dictionary<string, string>>(ProductDetails);
        }
    }
}

 

以上,通过JToken.Parse判断JSON字符串是否可以被转换,如果不行就抛异常。通过JsonConvert.DeserializeObject<Dictionary<string, string>>(ProductDetails)反序列化成字典集合。

最后,

 

public void Main(string[] args)
{
    var product = new Product();
    product.ProductDetails = "{'size':'10', 'weight':'10kg'}";

    foreach(var item in product.ProductDetailList)
    {
        Console.WriteLine(item.Key + " " + item.Value);
    }

    Console.Read();
}

 

遍历字典集合,可以把数据保存到数据库。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值